阻止现代IE?

blo*_*ong 14 javascript internet-explorer browser-detection

阻止IE绝对不是最佳实践,但它符合我对现有应用程序的要求.最有效的方法是什么,因为IE 10 中没有条件注释?对于IE 9及更低版本,这将起作用:

<!--[if IE]>
<script type="text/javascript">
window.location = "/IEblocked.html";
</script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

假设有一个最佳实践JavaScript解决方案,有什么陷阱我可以找到?我想知道是否存在以下问题:

  • 触发事件的顺序
  • iframe 我无法控制的元素
  • 在其他<script>标记的上下文中优先使用JS解决方案
  • 脚本通过该document.write('<script type="text/javascript" src="foo.js"></script>');方法加载.

我有一种感觉,很多人可能会被迫大喊"使用Modernizr""你疯了吗,不要把DOM放在DOM中!" 不幸的是,应用程序很大,此时一些增强功能超出了范围.

Sha*_*ard 16

嗯,IE是唯一支持客户端VBScript的浏览器.

所以只需将其添加到您的页面:(当然,除了IEblocked.html本身)

<script type="text/vbscript">
Document.Location = "IEblocked.html"
</script>
Run Code Online (Sandbox Code Playgroud)

我知道它在IE9及以下版本中工作.这条评论几乎证明它在IE10中仍然运行良好,至于未来我遇到了Eric Lippert的这篇博客文章:VBScript死亡的谣言被夸大了,其中包含以下段落:

在可预见的未来,我们将继续支持VBScript和JScript.显然,VBScript,JScript,WSH等必须继续随操作系统一起提供,因为大量现有的业务关键代码依赖于它们.将"死亡缓慢死亡"的特征描述为过于戏剧化.我们希望非托管COM脚本语言将在很多年内继续有用.Visual Studio Sustaining Engineering Team目前负责VBScript,JScript,Windows脚本组件,Windows脚本宿主等.

虽然8年前发布,但我强烈相信我们仍然在Windows的核心存在多年的VBScript,未来版本的Internet Explorer将继续使用它.

总而言之,我直接联系了Eric并询问"在Internet Explorer版本中,作为客户端语言支持VBScript需要多长时间?".作为回应,他说:

仍然有许多企业客户在浏览器中依赖VBScript,因此MSFT愚蠢地放弃对它的支持.支持非常便宜,即使少数客户失去良好的意愿也是昂贵的.

他不再在微软工作,所以他的答案不是正式的,但它是我能得到的最接近的,而不是几年前的博客文章,而是直接来自消息来源.考虑到所有因素,我可以得出结论,使用上述代码将会在未来的许多年内发挥作用.:)

  • 这是美味的邪恶.+1. (7认同)
  • 干杯,我试着直接联系Eric Lippert,还在等待回复.:) (2认同)

SDC*_*SDC 5

您的客户很疯狂。但是,如果他们为此付费,那么……。

如果您使用的是jQuery,它将提供浏览器检测功能。它已被弃用,因此您可能要避免使用最新版本,但它确实可以工作:

if ($.browser.msie) { ....do crazy stuff here.... }
Run Code Online (Sandbox Code Playgroud)

如果您不使用jQuery,或者不想使用不推荐使用的功能,则可以通过以下方法实现:

希望能有所帮助。