我有一个 js 文件,并且只想在浏览器是 IE 8 时运行一些代码。有没有办法可以做到这一点?
现在我只有这个,但它适用于所有浏览器:
if ($.browser.msie) {
//do stuff for IE 8
}
我有一个 js 文件,并且只想在浏览器是 IE 8 时运行一些代码。有没有办法可以做到这一点?
现在我只有这个,但它适用于所有浏览器:
if ($.browser.msie) {
//do stuff for IE 8
}
请参阅JavaScript 中的浏览器检测? 和http://modernizr.com
这是简短的(est?)答案:
if (navigator.userAgent.match(/MSIE 8/) !== null) {
// do something in IE8
}
浏览器特定的代码几乎从来都不是一个好主意。但是,如果您必须这样做,您可以将代码放在条件注释中。
http://www.positioniseverything.net/articles/cc-plus.html
<!--[if IE 8]>
<script type="text/javascript">
// this is only executed for IE 8
</script>
<![endif]-->
好的,我自己解决了这个问题:
if ($.browser.msie && $.browser.version == 8) {
//my stuff
}
如果页面小于 IE9,您可以在标题中调用以重定向页面吗?我发现自己经常为使用 IE6-10 混合的客户这样做。
在我调用的文件头中,
<!--[if IE 7]> <link rel="()" type="()" href="(Your link here.)"><![endif]-->
您可以研究的另一个选项是垫片或 polyfil。互联网上有许多帮助弥合现代网页设计和旧浏览器之间的差距。一个例子是Modernizr。
您可以使用条件注释来做到这一点(通过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>
你可以这样做:
if (navigator.userAgent.indexOf('MSIE 8.0') !== -1) {
// this clause will only execute on IE8
}
$.browser 已弃用,因此您不能在新的 jQuery 版本中使用此对象属性,因此要支持此功能,您必须使用 jQuery 迁移插件。这里是链接。 https://github.com/jquery/jquery-migrate/#readme
尝试像这样使用
<script type="text/javascript">
if(/MSIE \d|Trident.*rv:/.test(navigator.userAgent))
document.write('<script src="somescript.js"><\/script>');
</script>
您可以使用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...');
}
有关文档,请参阅此处