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

是否根据浏览器包含不同的JavaScript文件?,javascript,html,Javascript,Html,我只想在浏览器不是IE的情况下包含JavaScript文件。有什么方法可以做到这一点吗?你可以用完全不同的方式使用条件注释[仅在IE中插入内容],也许这会对你有所帮助 您可以使用 要获取在IE以外的浏览器中显示但不在IE中显示且仍将验证的内容,您可以使用: <!--[if !IE]>--> <script src="..."></script> <!--<![endif]--> 把它转过来怎么样?如果这是一种可能性,您可以使用IE

我只想在浏览器不是IE的情况下包含JavaScript文件。有什么方法可以做到这一点吗?

你可以用完全不同的方式使用条件注释[仅在IE中插入内容],也许这会对你有所帮助

您可以使用

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

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

把它转过来怎么样?如果这是一种可能性,您可以使用IE的条件注释:

否则,您可以嗅探用户代理,但这被认为是“糟糕的做法”。

您可以使用IE进行嗅探,如下所示:

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

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

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

请注意,当您使用条件注释(它们暂时阻止下载其他资源)时,IE(而不是其他浏览器)上会有页面加载速度的影响,详情如下:



更新2013:IE10+不再支持条件注释。

首先,请注意:这不是一个好做法。如果可能的话,你应该努力以一种与浏览器无关的方式设计你的网站,这样它就可以在所有浏览器上一致地工作,而不需要为浏览器特定的问题维护黑客和技巧

但如果您真的想这样做,则仅当浏览器为IE:


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

但是,如果你真的想用另一种方式来做,以下是你的一些选择:

  • 在绘制页面之前,使用服务器端浏览器嗅探处理浏览器。也就是说,使用服务器端语言(Java、PHP等)确定浏览器是什么(通常通过用户代理字符串),然后以这种方式有条件地包含JS文件。(例如,您可以使用PHP的函数。)
  • 如果浏览器不是IE,则使用客户端浏览器嗅探调用另一个JS文件。您可以使用JavaScript本身确定浏览器,然后如果浏览器不是IE,则在页面中插入另一个JS文件(例如,您可以使用jQuery的函数)
  • 提供了一种方法,也可以使用I.E.的条件注释

  • 是的,IE的条件脚本是您的答案:

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

    它不如条件注释为人所知,但我想我要提到的是,您也可以使用一种称为条件编译的IE功能-请参阅

    此示例来自他们的文档:

    /*@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 @*/
    
    /*@cc\u on@*/
    /*@如果(@_jscript_version>=5)
    编写(“JScript 5.0版或更高版本。
    ”; @否则@*/ 编写(“您需要一个更新的脚本引擎。
    ”; /*@结束@*/
    您是只想使用javascript来实现这一点,还是同时使用服务器端语言?您也可以使用IE的条件注释,仅在不是IE的情况下插入内容。是的,真的。你不必改变它,IE的条件评论可以用于针对非IE浏览器(是的,真的)。这将与OP要求的几乎相反。该死,你是对的。我怎么会错过OP问题中的“不”。太晚了!我只想指出,这不是一个处理指令。这只是微软专有的语法。处理指令的形式为
    @Eli:Sure-ough()。哇,我一直以为他们在处理指令。谢谢IE 11加载your-non-IE-script.js文件并抛出错误,指出IE未定义。@Mike-请参阅答案的结尾:“更新2013:IE10+不再支持条件注释。”
    /*@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 @*/