1

我有一个 js 文件,并且只想在浏览器是 IE 8 时运行一些代码。有没有办法可以做到这一点?

现在我只有这个,但它适用于所有浏览器:

if ($.browser.msie) {
    //do stuff for IE 8
} 
4

9 回答 9

9

请参阅JavaScript 中的浏览器检测?http://modernizr.com

这是简短的(est?)答案:

if (navigator.userAgent.match(/MSIE 8/) !== null) {
  // do something in IE8
}
于 2013-08-05T21:33:11.333 回答
7

浏览器特定的代码几乎从来都不是一个好主意。但是,如果您必须这样做,您可以将代码放在条件注释中。

http://www.positioniseverything.net/articles/cc-plus.html

<!--[if IE 8]>
  <script type="text/javascript">
    // this is only executed for IE 8
  </script>
<![endif]-->
于 2013-08-05T21:32:48.337 回答
2

好的,我自己解决了这个问题:

if ($.browser.msie && $.browser.version == 8) {
    //my stuff

} 
于 2013-08-05T21:41:23.293 回答
1

如果页面小于 IE9,您可以在标题中调用以重定向页面吗?我发现自己经常为使用 IE6-10 混合的客户这样做。

在我调用的文件头中,

<!--[if IE 7]>  <link rel="()" type="()" href="(Your link here.)"><![endif]--> 

您可以研究的另一个选项是垫片或 polyfil。互联网上有许多帮助弥合现代网页设计和旧浏览器之间的差距。一个例子是Modernizr

于 2013-08-05T21:35:35.897 回答
1

您可以使用条件注释来做到这一点(通过https://stackoverflow.com/a/10965091/1878731):

<!--[if IE 8 ]>    <html class="ie8"> <![endif]-->

if ($('html').is('.ie8')) {
    ...
}

或者不弄乱 html(通过http://en.wikipedia.org/wiki/Conditional_comment):

<script>
/*@cc_on

  @if (@_jscript_version == 5.8) { // IE8 detected
    // do something
  }
@*/
</script>
于 2013-08-05T21:37:49.797 回答
1

你可以这样做:

if (navigator.userAgent.indexOf('MSIE 8.0') !== -1) {
  // this clause will only execute on IE8
}
于 2013-08-05T22:17:03.223 回答
1

$.browser 已弃用,因此您不能在新的 jQuery 版本中使用此对象属性,因此要支持此功能,您必须使用 jQuery 迁移插件。这里是链接。 https://github.com/jquery/jquery-migrate/#readme

于 2015-12-10T06:45:52.317 回答
0

尝试像这样使用

<script type="text/javascript">
    if(/MSIE \d|Trident.*rv:/.test(navigator.userAgent))
        document.write('<script src="somescript.js"><\/script>');
</script>
于 2017-09-22T10:41:33.223 回答
0

您可以使用document.documentMode来获取 IE 的版本。

switch(document.documentMode)
    {
        case 8:
            //do something with IE8
            break;
        case 9:
            //do something with IE9
            break;
        case 10:
            //do something with IE10
            break;  
        case 11:
            //do something with IE11
            break;
        default:
            console.log('Other browsers...');
    }

有关文档,请参阅此处

于 2015-10-05T07:48:59.827 回答