加载不同的.js库后,MSIE的特征检测重定向发生在10以下

时间:2013-01-21 18:58:45

标签: javascript html internet-explorer web

this page(临时位置)我试图检测浏览器是否支持Float64Array,如果不支持重定向到this page, which tells user to use a different browser。但是,重定向似乎不适用于Windows XP 32位上的MSIE 8,因为该错误首先发生在libfreecell-solver.min.js中,该错误仅在此之后加载。

我该如何解决?

1 个答案:

答案 0 :(得分:2)

IE浏览器有自己的内置浏览器检测方案,没有其他人采用。我认为,对于任何低于10的IE版本,你可以依赖它。它看起来像这样:

<!--[if gte IE 8]>
<p>You're using a recent version of Internet Explorer.</p>
<![endif]-->

<!--[if lt IE 7]>
<p>Hm. You should upgrade your copy of Internet Explorer.</p>
<![endif]-->

<![if !IE]>
<p>You're not using Internet Explorer.</p>
<![endif]>

您基本上会添加<!--[if lte IE 9]-->标记,其中包含<script>标记,以便在您想要向其发送垃圾浏览器的任何地方进行window.location调用。可能没有你想要的那么优雅,但它至少是可靠的。

摘自此页:http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx

<强>更新 查看您的实际脚本,我立即看到一个解析/语法错误。

(function() {
    try {
        var a = new Float64Array(1);
        return; //no need
    } catch(e) {
        window.location.replace("../../js-fc-solve/incompatible-browser.html");
    } // Closing the catch block, but not closing the function block
)();

添加大括号:

(function() {
    try {
        var a = new Float64Array(1);
        return; //no need
    } catch(e) {
        window.location.replace("../../js-fc-solve/incompatible-browser.html");
    } // Closing the catch block
})(); // Close the function block before trying to call the anonymous function

在尝试包含库中包含其他错误之前,可能会也可能不会导致用户重定向。此外,它可能会也可能不会检测到运行库时需要检测到的所有功能。我会说这取决于浏览器(没有讽刺意味)。

如果这不起作用,您可以执行一个中间页面,决定是将用户发送到解算器页面还是显示不兼容的浏览器消息。