确定浏览器是不是为 IE 的最简单和最好的方法是啥? [复制]

Posted

技术标签:

【中文标题】确定浏览器是不是为 IE 的最简单和最好的方法是啥? [复制]【英文标题】:What is the simplest and best way to determine if the browser is IE or not? [duplicate]确定浏览器是否为 IE 的最简单和最好的方法是什么? [复制] 【发布时间】:2011-01-13 17:48:46 【问题描述】:

(不关心版本。IE还是不是IE。)

【问题讨论】:

您是否使用任何特定语言? 以上都是javascript(或框架)。 问题被标记为 JavaScript。 【参考方案1】:

http://api.jquery.com/jQuery.browser/

isIE = $.browser.msie;

$.browser 同时已被弃用,但尚未停用。 $.support 应改为使用。示例:$.support.boxModel

【讨论】:

+1 for jquery - 省去跨浏览器支持的麻烦! 我添加了一个帖子以提供更多信息,但这确实是最好的答案。 用户代理字符串很容易被伪造,至少在 Opera 和 Safari 中是这样。 @Marcel - RE:伪造的用户代理 - 但这只是 HTTP 的本质;没有办法解决这个问题。 尽管 jQuery 文档指出,在大多数情况下,您需要功能检测,而不是浏览器检测。当然,除非您只是使用浏览器检测来提醒人们升级到好的浏览器。【参考方案2】:

我不会通过浏览器嗅探来做到这一点(即直接或通过 Javascript 框架),因为用户代理字符串很容易被伪造(并且在这些情况下,取决于 JavaScript,可以关闭) .

在这种情况下(IE 与否),我会在您的 html 中使用 conditional comments。无论是否启用 JavaScript,它们都将始终有效。

【讨论】:

从来不知道这些 - 有趣的 +1。确实可以伪造代理字符串(实际上 Opera 曾经有一个伪装成 IE 的选项):但是浏览器嗅探的主要目的是提供预期在用户浏览器上工作的内容:如果他们对他们的内容撒谎是,然后是他们的监视-我完全同意您关于javascript的观点-可能最好的路线(尽管仍然不完美)是在服务器端进行检查。 [我认为这些条件 cmets 是什么?] 但是如果你不想使用 JavaScript,浏览器之间没有太大的区别。对于 CSS,您将使用 Css 浏览器依赖的 hacks。 @powtac - 假设大多数人使用“现代”浏览器,那么我会同意你的看法,但要悬而未决,旧浏览器对应该呈现什么 HTML 也有不同的想法(甚至有他们的特殊标签 '' 例如)。 @monojohnny:不,条件 cmets 在客户端,在您的 HTML 中。我认为最好进行特征检测,就像nczonline.net/blog/2009/12/29/… 描述的那样。这样,您始终可以确定存在所需的功能。 您可以使用条件 cmets 在 IE 和其他浏览器上包含不同的 <body class="something"> 标签。然后,您可以使用 body.ie6 .something ... 之类的规则进行 CSS 修复,而无需 hack。【参考方案3】:
<html>
<head>
</head>
<body>
<script type="text/javascript">
    alert(navigator.appName);
</script>
</body>
</html>

这会回复“netscape”(用于 Firefox)或“Microsoft Internet Explorer”(当我尝试 IE7 时 - 未尝试其他平台)

例如,请参阅下面的链接了解更多信息。

http://www.javascriptkit.com/javatutors/navigator.shtml

这与“if”/“else”结构相同。

<html>
<head>
</head>
<body>
<script type="text/javascript">
    if (navigator.appName=="Microsoft Internet Explorer") 
        alert("This is IE!");
    
    else 
        alert("This is not IE!");
    
</script>
</body>
</html>

实际上,您可能应该选择另一篇文章:坚持使用像 jquery 这样的知名库来整理所有边缘情况。

【讨论】:

我认为您不想发送警报窗口。 @Jeremy:我认为这不是重点。使用 alert 让 OP 尝试一下,看看 appName 在不同浏览器中的值是什么。然后他可以在实际代码中使用该变量。 是的,警报只是一个说明 - 但为了清楚起见,我现在包含了一个“if”/“else”。我认为无论如何OP实际上都想要jquery。 (我最初没有注意到这个标签)。【参考方案4】:

虽然这不是“最简单”的方法,但这里有一个非常好的页面来帮助进行浏览器检测。

http://www.w3schools.com/js/js_browser.asp

支持 W3C。

【讨论】:

w3schools +1 - 网络真正的奇迹之一! 嗯,链接失效了,目前... @Marcel - 为我工作 - 你确定网站没有阻止你查看页面,因为你有一个伪造的用户代理字符串? :-) 不,哈哈。不在 Firefox、Chrome 和 Opera 中。但也许是因为我现在使用的是 Windows,而不是我以前使用的 Linux。 ;)(没有火焰战争的意图)

以上是关于确定浏览器是不是为 IE 的最简单和最好的方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 检查多个值是不是为整数的最简单方法是啥?

C#中检查硬盘是不是为SSD而不在硬盘上写入任何文件的最简单方法是啥?

给定纬度/经度,使用 JSONP 检索城市和州的最简单方法是啥? [关闭]

在用户注销后防止浏览器的后退按钮显示安全数据的最简单方法是啥?

在 C++ 预印卡上打印的最简单方法是啥?

在 Python 中设置枚举的最简洁方法是啥? [复制]