如何使用JavaScript检测IE/Edge浏览器?

4

我正在尝试使用JavaScript根据用户所使用的浏览器应用某种样式到网页上。我可以检测出除IE/Edge外的所有浏览器。在我的代码片段中,我只是试图检测IE/Edge并应用样式。

以下是我的代码:

var bodyStyle = document.querySelector("#bodyArea");
if((navigator.userAgent.indexOf("Edge") != -1 ) || (!!document.documentMode == true ))
{
    alert("asdf");
    bodyStyle.style.paddingTop = "500px";
}
else
{
    bodyStyle.style.paddingTop = "300px";
}

当我在else部分放置一个警报时,它会给我一个警报,但是在if部分不起作用。因此,我认为我的问题出现在我尝试检测IE / Edge时。或者如果它出现在其他地方,请让我知道。如果有任何反馈,将不胜感激。谢谢!


3
抱歉,必须问一下...你为什么要仅针对IE和Edge用户修��页面? - Jonathan Lonowski
2
请使用CSS进行此操作!你的生活会改变:https://dev59.com/nFwY5IYBdhLWcg3wJlAq - Frederik.L
@JonathanLonowski 我这么做是因为我申请了一份实习,我正在尝试让所有浏览器都能正确地运行/显示我的代码,但IE/Edge无法与我的任何代码配合使用:'( 如果只是为了自己使用或其他什么原因,我不会真的在意IE/Edge用户哈哈 - user5187524
2
如果差异很大,请检查浏览器在呈现页面时是否使用标准模式而不是传统文档模式。 如果是内部网站,则IE/Edge可能默认为兼容性视图。 使用企业模式也可以设置此项。 - Jonathan Lonowski
2
可能是如何检测IE和Edge浏览器?的重复问题。 - Paul Sweatte
1个回答

2
您可以使用此自定义脚本来检测IE/Edge:
if (/MSIE 10/i.test(navigator.userAgent)) {
   // this is internet explorer 10
   window.alert('isIE10');
}

if(/MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent)){
    // this is internet explorer 9 and 11
    window.location = 'pages/core/ie.htm';
}

if (/Edge\/12./i.test(navigator.userAgent)){
   // this is Microsoft Edge
   window.alert('Microsoft Edge');
}

请查看此页面获取最新的IE和Edge用户代理字符串:https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx

我相信当用户代理被欺骗时,这将无法工作,但通常情况下应该没问题。 - Iman K
3
在JS中需要检测浏览器,这意味着某处存在更大的问题。在OP的使用情境中,绝对没有必要通过客户端脚本来检测浏览器。展示内容应该在展示代码中处理,而不是在JS中处理。 - Frederik.L
1
你的脚本文件在 HTML 文件中被正确调用了吗? - Peter Girnus
1
我会保持警觉,看看是否也能找到解决方案。 - Peter Girnus
1
@Gothburz 我找到了这个。如果有用的话。https://social.technet.microsoft.com/Forums/ie/en-US/769317b9-318c-40b2-ba4f-7a9d27265e71/microsoft-edge-sandboxing-of-external-javascript-code-breaks-prototypejs?forum=ieitprocurrentver。看起来Edge对外部JS的处理方式不同。 - Frederik.L
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接