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