禁止IE运行html code

2013-03-16 21:18:09 +08:00
 s20011301
<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一樣崩潰.
4299 次点击
所在节点    程序员
18 条回复
yyfearth
2013-03-16 23:24:33 +08:00
可以用document.write插入这段代码
<script>
if (!/MSIE/.test(navigator.userAgent)){
document.write("<script src='这段代码的JS'><\/script>");
}
</script>
或者后端检测UA,为IE返回一个特别的版本
s20011301
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
2013-03-17 02:36:29 +08:00
@s20011301 把你的代码另存为一个.js文件,然后在1楼发的代码中的那个位置写这个文件的地址.
s20011301
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
2013-03-17 23:16:23 +08:00
求助~~
momou
2013-03-17 23:24:58 +08:00
@s20011301 “<\/script>”是一楼手误。。。应该是</script>,表示这段代码结束。。。
rephaslife
2013-03-18 14:08:39 +08:00
是 `<!--[if IE]>...<![endif]-->` 吧
s20011301
2013-03-18 17:47:46 +08:00
不行啊. 就算什麼也不加,直接運行下面的:
<script>
if (!/MSIE/.test(navigator.userAgent)){
document.write("<script src=''></script>");
}
</script>

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

對,但那會使chrome 也無法運行.
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
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
2013-03-19 18:49:19 +08:00
s20011301
2013-03-19 18:52:15 +08:00
會出現這些代碼在頁面 <\/script>");}
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
2013-03-20 10:17:16 +08:00
楼上正解,字符串里面的script标签还是需要escape一下的。
s20011301
2013-03-20 11:48:57 +08:00
@momou

是網上申請的個人網誌~

感謝你,已經成功了. IE 不再出現播放器, Chrome則不受影響. ^.^
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
2013-03-21 23:15:46 +08:00
@yyfearth 学习了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/63154

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX