1

如果我尝试在不受支持的浏览器中运行生成的 javascript 代码会怎样?像IE6?

我不想让我的用户看到部分工作的应用程序损坏。有没有办法确保 dart/javascript 仅在浏览器受支持的情况下才能运行,并且如果不是,我的应用程序会优雅地降级为一些 html 横幅“请使用更新的浏览器”?

4

2 回答 2

2

您可以在此处使用浏览器检测器脚本:http ://www.quirksmode.org/js/detect.html

我从头顶写了这段代码,我现在没有测试机器可供使用:

var isNewFirefox = BrowserDetect.browser === 'Firefox'  && BrowserDetect.version >= 7;
var isNewChrome  = BrowserDetect.browser === 'Chrome';
var isNewIE      = BrowserDetect.browser === 'Explorer' && BrowserDetect.version >= 9;
var isNewSafari  = BrowserDetect.browser === 'Safari'   && BrowserDetect.version >= 5.1;
var isNewOpera   = BrowserDetect.browser === 'Opera'    && BrowserDetect.version >= 12;

if (isNewFirefox || isNewChrome || isNewIE || isNewSafari || isNewOpera) {
    var script = document.createElement('script');

    if (navigator.webkitStartDart || navigator.startDart || navigator.mozStartDart || navigator.oStartDart || navigator.msStartDart) {
        // Load Dart code!
        script.setAttribute('type', 'application/dart');
        script.setAttribute('src', 'http://.../foo.dart');
    } else {
        // Load dart2js code!
        script.setAttribute('src', 'http://.../foo.js');
    }

    document.body.appendChild(script);
} else {
    alert('Application wont work');
}

可以在以下位置找到版本信息:http ://www.dartlang.org/support/faq.html#what-browsers-supported

Dart VM 检测:http ://www.dartlang.org/dartium/#detect

于 2012-10-26T09:57:35.510 回答
2

您始终可以在纯 javascript 中检测浏览器,并且在确保浏览器有效之前不要运行 dart 程序。

于 2012-10-25T04:59:46.850 回答