只有在非Internet Explorer浏览器中运行脚本。

5

如何在除了Internet Explorer之外的所有浏览器中运行脚本?

我在我的网站上使用queryloader2,但是在IE9中加载需要大约一分钟的时间,我认为在旧版本的IE中情况可能更糟。在任何其他浏览器中,加载只需要几秒钟。因此,我希望在任何版本的IE中都不要运行该脚本(这并不真正影响网站的功能)。


3
以下是需要翻译的内容:Duplicate of https://dev59.com/cV3Va4cB1Zd3GeqPEuAa答案:重复的问题,可以参考https://dev59.com/cV3Va4cB1Zd3GeqPEuAa。 - speakr
3个回答

6

你需要使用条件注释来实现:

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

我以为这样做只会让脚本在IE中运行,而不是完全无法在IE中运行? 哎呀,看来不是这样啊,谢谢! - chrscblls
1
请注意 ! 符号。没有它,脚本只会在 IE 中加载。有了它,所有浏览器都可以加载,除了 IE。 - antyrat
谢谢你,伙计!很抱歉问了这么个愚蠢的问题,我早该意识到了。 - chrscblls
您缺少初始脚本标签的结束注释。没有它,整个内容将在非IE浏览器中显示为注释块。 - Mahmoud Al-Qudsi

5

所有其他答案中(发布时)的条件注释都是不正确的,将被解释为无效的HTML或在非IE浏览器中完全忽略作为HTML注释。

重要的是要理解,在除IE以外的任何浏览器中(甚至新版本的IE),“条件HTML注释”只是一个注释。换句话说,像得到赞同的答案建议的那样:

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

对于除IE之外的任何内容,<!--(位于第1行)和 --> (位于第3行)间的长注释,就像其他HTML注释一样。
要让IE忽略一段HTML代码块,您需要利用HTML注释不支持嵌套的特性,即<!-- <!-- --> something -->是一个注释,它在第一个-->处结束而不是第二个,这意味着something -->将被解析为HTML而不被视为注释的一部分。
因此,我们可以使用以下代码:
<!--[if !IE]-->
    <script type="text/javascript" src="script.js"></script>
<!--<![endif]-->

在这里,非IE浏览器将看到两个单独的注释(分别在第1和第3行),中间是常规HTML。但是解析这些标记的浏览器将看到从第一行开始的注释,然后忽略直到在第三行遇到<![endif]-->。这为我们提供了一段代码块,将由非IE/现代浏览器执行,但将被支持条件HTML的旧版本IE忽略。


-2

以下代码可能是正确的,但不幸的是在我的问题中无法工作。如果上面的代码无法工作,请使用这个。

<![if !IE]>You are NOT using IE.<![endif]

你不能使用那个;其他浏览器会将其解释为无效的HTML。它必须在注释块中。 - Mahmoud Al-Qudsi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接