gpt4 book ai didi

javascript - IE10 navigator.userAgent 脚本不起作用

转载 作者:行者123 更新时间:2023-11-30 17:41:34 25 4
gpt4 key购买 nike

我试图通过不查找以 IE 浏览器为中心的组件而是查找包含 firefox 或 chrome 的 navigator.userAgent 来检测浏览器是否为 IE。以下脚本在 FF 和 Chrome 中运行良好,但在 IE10 中似乎被忽略了。

var is_firefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
if (!is_firefox && !is_chrome) {
var message = "I'm an IE browser";
} else {
var message = "I'm not an IE browser";
}

最佳答案

虽然我很想加入评论中的讨论,但我真的不能。刚刚重新创建了我的帐户。所以来回答你的问题。它失败可能是有原因的,这说明了为什么测试 userAgent 是个坏主意。

如果您安装了 Chrome Frame 插件,它会将“chromeframe”添加到 userAgent 字符串,这会将 is_chrome 设置为 true。如果我没记错的话,我的 IE 10 带有 Chrome Frame。将userAgent字符串写入console看看。在几乎每个人的诚实意见中,使用 userAgent 只是一个坏主意,就像一般的浏览器检测一样,从长远来看可能不是最简单的。一旦您了解可以在安装附加组件时修改 userAgent 字符串并且用户可以完全更改它们,您就会意识到为您完成的工作。

如果您尝试根据用户是否拥有 IE 来阻止或提供内容,最好使用功能检测或条件注释。您可以使用它来设置一个 js 变量,然后执行任何您需要的操作。这是使用条件注释的老派方法

<html>
<head>
<!--[if ie 7]>
<script>var _ie=8;</script>
<![endif]-->
<!--[if ie 8]>
<script>var _ie=8;</script>
<![endif]-->
<!--[if ie 9]>
<script>var _ie=9;</script>
<![endif]-->
<script type="text/javascript">
if(_ie && _ie<9){
// do something here
// will not run in any other browser, because _ie is undefined
}
</script>
</head>

此解决方案的缺点是它不能在外部文件中使用,因此条件注释将出现在页面上,而检查可能出现在页面本身或外部文件中。会有错误,因为你先检查变量是否存在

在 IE 中最简单的方法是检查 ActiveXObject,因为它是专有的,而且可能不会去任何地方。所以它很可能在未来是安全的。

<script type="text/javascript">
// test for ie
var _ie=("ActiveXObject" in window);
</script>

真的,这是通过特征检测来检测浏览器,所以它仍然符合规范,而且它简短而有趣。

也可以引用这个document

关于javascript - IE10 navigator.userAgent 脚本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20978748/

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