V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
s20011301
V2EX  ›  程序员

禁止IE运行html code

  •  
  •   s20011301 · 2013-03-16 21:18:09 +08:00 · 4302 次点击
    这是一个创建于 4281 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <script type="text/javascript" ><!--
    document.write(unescape('%3Cscript%20type%3D%22text/javascript%22%20src%3D%22http%3A//scmplayer.net/script.js%22%20%3E%3C/script%3E'));
    //--></script>
    <script type="text/javascript"><!--
    SCMMusicPlayer.init("{'skin':'skins/blue/skin.css','playback':{'autostart':'true','shuffle':'true','volume':'50'},'playlist':[{'title':'%u611B%u3068%u4F1A%u3046','url':'http://www.fileden.com/files/2007/2/11/760403/SCM%20player/01.mp3'}],'placement':'top','showplaylist':'false'}");
    //--></script>


    我在网页上加了音乐插件code. 用了JS,使IE非常容易崩溃,但其他浏览器則没有问题.
    请问如何写一段代码,使IE 忽略那段音乐代码,而不影响其他浏览器?

    網上問了人, 要我加上:
    <!--[if !IE]>

    <![endif]-->

    但這樣連 Chrome 也運行不了那段代碼.

    又有人叫我加上:
    <!--[if !(IE 8)]><!-->

    CODE


    <!--<![endif]-->

    但沒有作用, IE一樣崩潰.
    18 条回复    1970-01-01 08:00:00 +08:00
    yyfearth
        1
    yyfearth  
       2013-03-16 23:24:33 +08:00   ❤️ 1
    可以用document.write插入这段代码
    <script>
    if (!/MSIE/.test(navigator.userAgent)){
    document.write("<script src='这段代码的JS'><\/script>");
    }
    </script>
    或者后端检测UA,为IE返回一个特别的版本
    s20011301
        2
    s20011301  
    OP
       2013-03-16 23:50:48 +08:00
    我不太懂編程. 請問是這樣嗎? 我將上面的代碼全部放到 "这段代码的JS"

    <script>
    if (!/MSIE/.test(navigator.userAgent)){
    document.write("<script src='<script type="text/javascript" ><!--
    document.write(unescape('%3Cscript%20type%3D%22text/javascript%22%20src%3D%22http%3A//scmplayer.net/script.js%22%20%3E%3C/script%3E'));
    //--></script>
    <script type="text/javascript"><!--
    SCMMusicPlayer.init("{'skin':'skins/blue/skin.css','playback':{'autostart':'true','shuffle':'true','volume':'50'},'playlist':[{'title':'%u611B%u3068%u4F1A%u3046','url':'http://www.fileden.com/files/2007/2/11/760403/SCM%20player/01.mp3'}],'placement':'top','showplaylist':'false'}");
    //--></script>'><\/script>");
    }
    </script>


    但沒用啊~~
    jybox
        3
    jybox  
       2013-03-17 02:36:29 +08:00
    @s20011301 把你的代码另存为一个.js文件,然后在1楼发的代码中的那个位置写这个文件的地址.
    s20011301
        4
    s20011301  
    OP
       2013-03-17 12:24:42 +08:00
    就是把1樓的代碼,用記事本存成.JS,然後放在網上,取得連結,然後放到那個" '这段代码的JS'" 吧?

    但是請問2樓(下面)的代碼,是不是完全正確的?
    因為加入之後,我的頁面頂部出現這些符號? ---> \/script>");}

    <script>
    if (!/MSIE/.test(navigator.userAgent)){
    document.write("<script src='这段代码的JS'><\/script>");
    }
    </script>
    s20011301
        5
    s20011301  
    OP
       2013-03-17 23:16:23 +08:00
    求助~~
    momou
        6
    momou  
       2013-03-17 23:24:58 +08:00
    @s20011301 “<\/script>”是一楼手误。。。应该是</script>,表示这段代码结束。。。
    rephaslife
        7
    rephaslife  
       2013-03-18 14:08:39 +08:00
    是 `<!--[if IE]>...<![endif]-->` 吧
    s20011301
        8
    s20011301  
    OP
       2013-03-18 17:47:46 +08:00
    不行啊. 就算什麼也不加,直接運行下面的:
    <script>
    if (!/MSIE/.test(navigator.userAgent)){
    document.write("<script src=''></script>");
    }
    </script>

    最後頁面還是顯示 --------> "); }
    似乎代碼有問題.
    s20011301
        9
    s20011301  
    OP
       2013-03-19 10:21:33 +08:00
    回#7,

    對,但那會使chrome 也無法運行.
    yangg
        10
    yangg  
       2013-03-19 10:24:53 +08:00
    <!--[if !IE]><-->
    只有不是ie浏览器才能看到这里
    <![endif]-->

    http://www.cnblogs.com/sohighthesky/archive/2010/03/05/ie-conditional-comments.html
    momou
        11
    momou  
       2013-03-19 12:08:10 +08:00
    @s20011301 不好意思,上面看错了,一楼的方法没有问题,代码也没有问题。
    完整的方法应该是,已测试:
    一、在页面插入如下代码
    <script>
    if (!/MSIE/.test(navigator.userAgent)){
    document.write("<script src='a.js'><\/script>");
    }
    </script>
    二、把下面的代码保存为a.js上传
    document.write(unescape('%3Cscript%20type%3D%22text/javascript%22%20src%3D%22http%3A//scmplayer.net/script.js%22%20%3E%3C/script%3E'));
    window.onload=function(){SCMMusicPlayer.init("{'skin':'skins/blue/skin.css','playback':{'autostart':'true','shuffle':'true','volume':'50'},'playlist':[{'title':'%u611B%u3068%u4F1A%u3046','url':'http://www.fileden.com/files/2007/2/11/760403/SCM%20player/01.mp3'}],'placement':'top','showplaylist':'false'}");}
    s20011301
        13
    s20011301  
    OP
       2013-03-19 18:52:15 +08:00
    會出現這些代碼在頁面 <\/script>");}
    momou
        14
    momou  
       2013-03-20 09:41:34 +08:00
    @s20011301 不是你自己的空间?
    那就这样,直接插入以下代码:
    <script>
    if (!/MSIE/.test(navigator.userAgent)){
    document.write(unescape('%3Cscript%20type%3D%22text/javascript%22%20src%3D%22http%3A//scmplayer.net/script.js%22%20%3E%3C/script%3E'));
    window.onload=function(){SCMMusicPlayer.init("{'skin':'skins/blue/skin.css','playback':{'autostart':'true','shuffle':'true','volume':'50'},'playlist':[{'title':'%u611B%u3068%u4F1A%u3046','url':'http://www.fileden.com/files/2007/2/11/760403/SCM%20player/01.mp3'}],'placement':'top','showplaylist':'false'}");}
    }
    </script>
    skydiver
        15
    skydiver  
       2013-03-20 10:17:16 +08:00
    楼上正解,字符串里面的script标签还是需要escape一下的。
    s20011301
        16
    s20011301  
    OP
       2013-03-20 11:48:57 +08:00
    @momou

    是網上申請的個人網誌~

    感謝你,已經成功了. IE 不再出現播放器, Chrome則不受影響. ^.^
    yyfearth
        17
    yyfearth  
       2013-03-21 21:39:28 +08:00
    @momou
    @s20011301
    用 "<\/script>" 而不是 "</script>" 是因为后者会被JS引擎误认为是脚本结束导致出错。
    解决办法一般是写成前者,因为两者完全等同。或者把string分开:"</s"+"cript>"
    还有个办法就是用encodeURI,变化一下,类似lz用的unescape,但是unescape已经被淘汰了,不应该再使用。
    因此你上面可以写成 document.write('<script type="text/javascript" src="http://scmplayer.net/script.js"><\/script>');
    不需要unescape
    momou
        18
    momou  
       2013-03-21 23:15:46 +08:00
    @yyfearth 学习了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5610 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:36 · PVG 09:36 · LAX 17:36 · JFK 20:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.