【问题标题】:Conditional tags for IE - is it possible NOT to load a JS file if the browser is IE?IE 的条件标签 - 如果浏览器是 IE,是否可以不加载 JS 文件?
【发布时间】:2012-10-01 22:57:39
【问题描述】:

这听起来可能很奇怪,但我不想在用户使用 IE 8 时添加其他文件,而是想删除一个通常在所有其他浏览器中加载的 JS 文件。

再说一遍。

我的head 中有这个:

<script type="text/javascript" async src="my-script.js"></script>

我希望该脚本可以在除 IE 之外的所有浏览器中运行(因为它不工作,所以我不想加载它)。

我知道通常的条件标签是这样的

<!--[if lt IE 9]>
<![endif]-->

但我想没有办法反过来使用它们,所以我想到的唯一解决方案是……

<?php if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') == FALSE) { ?>
      <script type="text/javascript" async src="my-script.js"></script>
<?php } ?>

这是执行此操作的最佳解决方案吗?此外,我实际上需要测试所有低于 9 的 IE 版本。所以我不希望 JS 文件在 IE8、IE7 和 IE6 中加载。

提前谢谢你。

【问题讨论】:

    标签: php javascript internet-explorer internet-explorer-8


    【解决方案1】:

    除 IE 之外的所有内容

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

    仅限 IE 9 及更高版本

    <!--[if gt IE 8]>
    <script type="text/javascript" async src="my-script.js"></script>
    <![endif]-->
    

    <!--[if gte IE 9]>
    <script type="text/javascript" async src="my-script.js"></script>
    <![endif]-->
    

    IE 9 及更高版本 + 其他浏览器

    理论上,您可以使用 OR 运算符,但 NOT IE 注释样式不支持此操作。

    <!--[if !(IE)|(gte IE 9)]>
    Test
    <![endif]-->
    

    你也可以像这样使用嵌套的 cmets:

    <!--[if !IE]><![if gte IE 9]>-->
    Test
    <!--<![endif]><![endif]-->
    

    More information

    【讨论】:

    • 第一个是无条件注释,再检查语法;)
    • ——是的。它只是看起来不像,因为它是为不实现 condcom 的浏览器揭示代码的黑客。
    • 对于其他浏览器来说,这只是一个常规评论,他们不知道“条件 cmets”。这和写作是一样的。
    • ——对于其他浏览器,它是一个常规注释,后跟一个脚本元素,然后是另一个常规注释。因为 IE 是单个注释,并且脚本元素不会被处理......这就是问题所要求的。
    • 我想这就是我的意思,也许我不是很清楚。但无论我们怎么称呼它,它都会按照@matt 的要求做 :)
    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2013-02-09
    • 2014-06-29
    • 1970-01-01
    • 2015-04-08
    • 2011-11-21
    相关资源
    最近更新 更多