如果网页浏览器是IE浏览器,请执行一些操作

时间:2011-01-29 08:16:19

标签: javascript html internet-explorer browser

我在哪里将此脚本放在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>

3 个答案:

答案 0 :(得分:7)

我可以提出一个稍微替代的建议,跳过可欺骗的UA字符串,并使用Microsoft实现的(并且符合标准的)策略:

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

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

这使用conditional comments (Quirksmode.org link)

答案 1 :(得分:2)

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

几乎每个人都希望检测特定浏览器(通常是IE),这是因为他们想要使用的特定功能在浏览器中不可用,或者有错误。

但是浏览器检测作为一种策略失败的原因有很多:

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

那么你应该做什么而不是浏览器检测呢?

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

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

  • 使用像JQuery这样的库来完成所有这些工作。使用JQuery,您可以更加自信,大多数Javascript代码都适用于所有浏览器。

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

答案 2 :(得分:1)

if(browser=="Microsoft Internet Explorer")

==用于比较,=用于作业

将其放在头部标签中。