根据浏览器包含不同的JavaScript文件?

时间:2010-09-10 22:16:27

标签: javascript html

我想仅在浏览器不是IE时才包含JavaScript文件。有没有办法做到这一点?

7 个答案:

答案 0 :(得分:13)

您可以使用IE的conditional comments执行此操作,如下所示:

<![if !IE]>
<script src="your-non-IE-script.js" type="text/javascript"></script>
<![endif]>

请注意,上述内容由非IE浏览器处理,因为条件是 HTML注释,而是处理指令所以处理中间的位由非IE浏览器。 IE看到条件并跳过内容,因为它理解条件意味着“不是你,继续前进。”

如果你想为IE做一些 ,你可以使用类似的表格,但使用HTML注释(使用--),因为这是你可以依赖的唯一方式其他浏览器忽略内容。 IE知道要注意它们,即使它们是评论。更多关于上面的链接。

请注意,当您使用条件注释(它们会暂时阻止下载其他资源)时,IE(而非其他浏览器)的页面加载速度有所不同,更多信息请参见:http://www.phpied.com/conditional-comments-block-downloads/


更新2013 :IE10 +不再支持条件评论。

答案 1 :(得分:3)

您可以使用IE conditional comment

要获得将在IE以外的浏览器中显示的内容,但不会在IE中显示,并且仍然会验证,您可以使用:

<!--[if !IE]>-->
  <script src="..."></script>
<!--<![endif]-->

答案 2 :(得分:3)

首先,请注意:这不是一个好习惯。如果可能,您应该努力以与浏览器无关的方式设计您的网站,以便它在所有浏览器中保持一致,而无需为浏览器特定问题维护黑客和技巧。

但是如果你真的想这样做,那么只有在浏览器 IE时才包含文件最简单:

<!--[if lt IE 7]>
<script type="text/javascript" src="global.js"></script>
<![endif]-->

(仅在浏览器为IE6或更低版本时才包含该文件。)

但是,如果你真的想以相反的方式做到这一点,这里有一些你的选择:

  1. 在绘制页面之前,使用服务器端浏览器嗅探来处理浏览器。也就是说,使用服务器端语言(Java,PHP,无论如何)来确定浏览器是什么(通常通过用户代理字符串),然后通过这种方式有条件地包含您的JS文件。 (例如,您可以使用PHP的get_browser函数。)
  2. 如果浏览器不是IE,请使用客户端浏览器嗅探来调用另一个JS文件。您可以使用JavaScript本身确定浏览器,如果浏览器不是IE,则可以在页面中插入另一个JS文件。 (例如,您可以使用jQuery的browser函数。)
  3. T.J.'s answer提供了一种方法,可以通过I.E.的条件评论来完成。

答案 3 :(得分:3)

它比条件评论鲜为人知,但我想我会提到你也可以使用名为条件编译的IE功能 - 见http://msdn.microsoft.com/en-us/library/7kx09ct1%28VS.80%29.aspx

这个例子来自他们的文档:

/*@cc_on @*/
/*@if (@_jscript_version >= 5)
document.write("JScript Version 5.0 or better.<BR>");
@else @*/
document.write("You need a more recent script engine.<BR>");
/*@end @*/

答案 4 :(得分:1)

你可以完全不同的方式[仅在IE中插入一些东西]使用条件评论,这可能会对你有帮助。

http://en.wikipedia.org/wiki/Conditional_comment

答案 5 :(得分:1)

是的,IE的条件脚本是你的答案:

<!--[if lt IE 7 ]>
  <script src="/js/my_ie_script.js"></script>
<![endif]-->

答案 6 :(得分:0)

转过身来怎么样?如果有可能,您可以使用IE的条件注释:http://www.quirksmode.org/css/condcom.html

否则你可以嗅探用户代理,但这被认为是'不良做法'。