【问题标题】:Do something if web browser is IE, in JavaScript如果网络浏览器是 IE,在 JavaScript 中做一些事情
【发布时间】:2011-06-27 05:11:21
【问题描述】:

我应该将这个脚本放在我的 HTML 中的什么位置以使其工作?我必须对其进行哪些更改?

<script type="text/javascript">
var browser=navigator.appName;
if(browser="Microsoft Internet Explorer")
  {
  document.getElementById("html").innerHTML="\
  <body><p>Your browser is IE.</p></body>";
  }
</script>

【问题讨论】:

    标签: javascript html internet-explorer browser


    【解决方案1】:

    我能否提出一个稍微不同的建议,跳过可欺骗的 UA 字符串,并使用 Microsoft 实施(且符合标准)的策略:

    <!--[if ie]>
        <script type="text/javascript">
            document.getElementyId("html").innerHTML = "<body><p>Your browser is IE.</p></body>";
        </script>
    <![endif]-->
    

    要使用它,请将其放在文档的head 中。我不认为它可以放在 inside 脚本标签中(因为它基于 html 注释语法,而不是 JavaScript)。

    这使用conditional comments (Quirksmode.org link)

    【讨论】:

    • +1:条件 cmets 是在浏览器中检测 IE 的事实上的标准方法。在大多数情况下,我仍然会质疑是否需要这样做,但如果有必要,这就是如何做到这一点。
    • 我在 html 的 header 元素中实现了您的代码,但它不起作用:(
    • 你在用IE吗? “不工作”是什么意思?你把条件注释放在哪里了?
    • 我同意 Internet Explorer 的 css 条件 cmets 是我最好的选择,因为我已经研究过了。谢谢!
    • 这让我感到好奇和挖掘了一下。注意IE10 no longer implements conditional comments
    【解决方案2】:

    如果可能的话,我建议避免直接浏览器检测。

    几乎所有有人想要检测特定浏览器(通常是 IE)的情况,都是因为他们想要使用的特定功能在该浏览器中不可用,或者存在错误。

    但由于多种原因,浏览器检测作为一种策略在这里失败了:

    • 您不知道该浏览器的未来版本是否可以解决问题,在这种情况下,您解决问题的代码本身可能会导致问题。
    • 如果其他浏览器的该功能也存在问题,您也必须检测该浏览器。从逻辑上讲,由于没有两个浏览器具有完全相同的功能集,因此您最终必须检测浏览器、版本和操作系统的所有可能组合。
    • 浏览器检测几乎不可能保证准确。大多数浏览器检测脚本都基于触发仅影响特定浏览器的怪癖的黑客攻击,而且大多数都非常不可靠。
    • 即使只是 IE 检测也不够好。 IE6、IE7和IE8之间有很大的区别。 IE9 指日可待,这将再次大不相同。

    那么除了浏览器检测,你应该怎么做呢?

    • 检测特征。有很多方法可以做到这一点,但我所知道的最好的解决方案是一个名为Modernizr 的脚本。将此脚本放在您的网站中,您的页面将获得一堆 CSS 类和 Javascript 属性,您可以使用它们来确定给定功能是否可用。
      例如,如果您想在您的站点,大多数浏览器都可以使用 CSS,但 IE 和其他旧版本的浏览器不能。对于这些浏览器,您可以轻松地使用背景图像。 Modernizr 会为您提供 cssgradientsno-cssgradients 的 CSS 类,您可以相应地设置这两个类的样式。

    • 将缺少的功能添加到浏览器。这比较棘手,但对于某些功能,它可以做到,特别是对于 IE。一个很好的例子是CSS3Pie,这是一个允许 IE 使用 CSS border-radius 功能(以及一个或两个其他功能)的 hack,它在所有其他浏览器中都可用。还有很多其他类似这样的小脚本可以改进 IE 的功能。

    • 使用像 JQuery 这样的库,它可以为您完成所有这些工作。使用 JQuery,您可以更加确信您的大部分 Javascript 代码可以在所有浏览器上运行。

    如果您必须使用浏览器检测来判断用户是否正在运行 IE(我接受在某些情况下是必要的),然后按照@David Thomas 的回答使用条件 cmets .但在考虑任何其他方法后,请谨慎行事。

    【讨论】:

      【解决方案3】:
      if(browser=="Microsoft Internet Explorer")
      

      == 比较,= 赋值

      把它放在头标签中。

      【讨论】:

        猜你喜欢
        • 2011-02-18
        • 2014-12-02
        • 1970-01-01
        • 2012-03-03
        • 1970-01-01
        • 1970-01-01
        • 2012-10-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多