如果我尝试在不受支持的浏览器中运行生成的 javascript 代码会怎样?像IE6?
我不想让我的用户看到部分工作的应用程序损坏。有没有办法确保 dart/javascript 仅在浏览器受支持的情况下才能运行,并且如果不是,我的应用程序会优雅地降级为一些 html 横幅“请使用更新的浏览器”?
您可以在此处使用浏览器检测器脚本: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
您始终可以在纯 javascript 中检测浏览器,并且在确保浏览器有效之前不要运行 dart 程序。