gpt4 book ai didi

javascript - 根据浏览器包含不同的 JavaScript 文件?

转载 作者:太空狗 更新时间:2023-10-29 13:05:41 24 4
gpt4 key购买 nike

我只想在浏览器不是 IE 时包含一个 JavaScript 文件。有什么办法吗?

最佳答案

2022 年更新:

一些给你的选项:

  1. 让您的服务器查看 User-Agent header ,并向 Internet Explorer 和其他浏览器发送不同的 HTML。

    优点:

    • 无需客户端解决方案。

    缺点:

    • 众所周知,依赖 User-Agent 字符串容易出错,它们可能会被欺骗或完全不存在。
  2. 嗅探 navigator.userAgent 并根据您的发现输出或不输出 script 标记。

    优点:

    • 没有服务器端要求。

    缺点:

    • 与 #1 相同:众所周知,依赖 User-Agent 字符串容易出错,并且它们可能被欺骗或完全不存在。
    • 有些人在从代码输出 script 标签时遇到问题,尤其是通过 document.write,但这取决于您的用例 document.write 可能是不可避免的(例如,您是否需要在其他脚本之前使用该脚本等)。
  3. 在 JavaScript 运行时中嗅探只有 Internet Explorer 具有的内容,并根据您的发现输出或不输出 script 标记。

    优点:

    • 没有服务器端要求。
    • 没有用户代理嗅探。

    缺点:

    • 一些人在动态添加脚本标签时遇到的问题。

我可能会看#3。例如,任何甚至模糊 的现代浏览器都具有Symbol 功能。 Internet Explorer 没有。所以:

if (typeof Symbol !== "undefined") {
document.write("<script src='./your-non-ie-script.js'><\/script>");
// Or if you prefer
let script = document.createElement("script");
script.src = "./your-non-ie-script.js";
document.activeElement.parentNode.appendChild(script);
}

Symbol 只是一个例子,IE 缺少 ReflectProxy 和 ES2015 中的其他一些东西,而现在其他一切都有……

(不知道为什么我在 2013 年没有提到这个!)


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


您可以使用 IE 的 conditional comments 来做到这一点,像这样:

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

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

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

请注意,当您使用条件注释(它们暂时阻止下载其他资源)时,IE(不是其他浏览器)会影响页面加载速度,更多信息请参见:http://www.phpied.com/conditional-comments-block-downloads/

关于javascript - 根据浏览器包含不同的 JavaScript 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3688769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com