我想知道是否可以在Internet Explorer中为javascript文件编写条件javascript 。
即。像这样......
if (is IE7) {
do this } else {
do this instead
});
我知道我可以在头部使用条件注释为IE加载完全不同的脚本,但我只想更改一小段代码,因此加载完全不同的工作表将是一种“昂贵”的方法。
答案 0 :(得分:4)
编写Javascript时,执行功能检测始终是一种方法,而不是浏览器检测。因此,而不是if (IE7)
做if (feature)
。
例如,如果您想知道您的浏览器是否支持getElementsByClassName()
,而不是检查浏览器版本,则检查是否存在该函数(if (document.getElementsByClassName)
)。
请阅读这篇精彩的文章:
Object detection on Quirksmode
如果你想知道是否 查看您的页面支持的浏览器 您想要使用的某些对象 你的代码,你永远不应该使用 浏览器检测。当然,你知道的 这个和那个浏览器将支持 你的代码在某某浏览器中 惯于。但是其他浏览器呢, 模糊的浏览器?
答案 1 :(得分:2)
不在JavaScript文件中。
一些替代方案是:
在加载脚本之前使用全局变量来检入JavaScript文件。这是一种混合方法,可能会出现凌乱,但它可以保证IE检测。
<!--[if IE]>
<script type="text/javascript">
var is_ie = true;
</script>
<![endif]-->
<script type="text/javascript" src="somefile.js"></script>
或者,在JavaScript文件中使用浏览器或object detection的更传统的方法。
答案 2 :(得分:2)
Conditional compilation正是您所寻找的。
<script>
/*@cc_on
@if (@_jscript_version == 5.7 && window.XMLHttpRequest)
document.write("You are using IE7");
@end
@*/
</script>
答案 3 :(得分:1)
尽管这是对原始问题的回答,但这不是你应该做的。所以不要这样做!
为什么不弄清楚您正在使用哪个浏览器并将其存储在javascript中的变量中。然后你可以在你的javascript中使用statemenets等。例如如果我是IE,那么这样做,否则这样做。你明白了!
你看到了这个吗? Browser sniffing突出的一点:
var is = {
ff: window.globalStorage,
ie: document.all && !window.opera,
ie6: !window.XMLHttpRequest,
ie7: document.all && window.XMLHttpRequest && !XDomainRequest && !window.opera,
ie8: document.documentMode==8,
opera: Boolean(window.opera),
chrome: Boolean(window.chrome),
safari: window.getComputedStyle && !window.globalStorage && !window.opera
}
答案 4 :(得分:1)
我的首选脚本是PPK的BrowserDetect script。它轻巧,易于理解,不需要您使用库。加载后,您可以编写如下代码:
if (BrowserDetect.browser == "Explorer" && BrowserDetect.version >= 6 && BrowserDetect.version <= 8) {
// IE6-8 code
{
当然,你应该避免在所有(合理的)成本下使用它,但是有时候将IE特定的代码隔离得比较干净,而不是试图破解IE特定的功能和错误。
答案 5 :(得分:0)
如果您使用的是jquery,则代码执行此操作
if ($.browser.msie && $.browser.version == '6.0') {
//do IE specific code
}
答案 6 :(得分:-1)
如果你想使用jquery,它有一个内置的浏览器检测。