如果web浏览器是IE,请使用JavaScript执行操作

如果web浏览器是IE,请使用JavaScript执行操作,javascript,html,internet-explorer,browser,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&

我应该把这个脚本放在我的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>

var browser=navigator.appName;
如果(browser=“Microsoft Internet Explorer”)
{
document.getElementById(“html”).innerHTML=”\
您的浏览器是IE。

”; }
==用于比较,=用于赋值

将其放置在头部标签中

==用于比较,=用于赋值


将其放在head标签中。

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

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

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


这使用了。

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

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

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


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

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

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

  • 您不知道该浏览器的未来版本是否可以纠正该问题,在这种情况下,修复该问题的代码本身可能会导致问题
  • 如果另一个浏览器也有该功能的问题,您也必须检测该浏览器。从逻辑上讲,由于没有两个浏览器具有完全相同的功能集,因此最终必须检测浏览器、版本和操作系统的所有可能组合
  • 浏览器检测几乎不可能保证准确。大多数浏览器检测脚本都是基于黑客攻击的,这些黑客攻击只会影响特定的浏览器,而且大多数都非常不可靠
  • 即使只是检测也不够好。IE6、IE7和IE8之间有很大的区别。IE9即将到来,这将再次发生巨大的变化
那么,你应该做什么来代替浏览器检测呢

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

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

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


如果您必须使用浏览器检测来判断用户是否正在运行IE(我承认在某些情况下这是必要的),那么按照@David Thomas的回答,使用条件注释。但是,在考虑了其他解决方法之后,请谨慎地这样做。

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

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

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

  • 您不知道该浏览器的未来版本是否可以纠正该问题,在这种情况下,修复该问题的代码本身可能会导致问题
  • 如果另一个浏览器也有该功能的问题,您也必须检测该浏览器。从逻辑上讲,由于没有两个浏览器具有完全相同的功能集,因此最终必须检测浏览器、版本和操作系统的所有可能组合
  • 浏览器检测几乎不可能保证准确。大多数浏览器检测脚本都是基于黑客攻击的,这些黑客攻击只会影响特定的浏览器,而且大多数都非常不可靠
  • 即使只是检测也不够好。IE6、IE7和IE8之间有很大的区别。IE9即将到来,这将再次发生巨大的变化
那么,你应该做什么来代替浏览器检测呢

  • 检测特征。有很多方法可以做到这一点,但我所知道的最好的解决方案是一个名为。将此脚本放在您的站点中,您的页面将获得一组CSS类和Javascript属性,您可以使用这些类和属性来确定给定功能是否可用。
    例如,如果您想在站点上使用渐变,大多数浏览器都可以使用CSS,但IE和其他浏览器的旧版本不能。对于这些浏览器,您可以轻松地使用背景图像。Modernizer将为您提供一个包含
    cssgradients
    无cssgradients
    的CSS类,