我有一个应用程序正在运行,它在Chrome和Firefox中运行良好。 Safari是另一个故事。为了举例,让我们假装这是我的应用程序:
'use strict';
const x = 3;
function test(){
let y = 4;
return y;
};
当我在Safari中运行时,我得到:
SyntaxError:意外的关键字'const'。严格模式不支持Const声明。
然后,如果我删除'use strict',我会得到:
SyntaxError:意外的标识符'y'
此时我决定第一次看看转换,所以我安装了Babel,我将客户端代码转换为ES5并坐在新文件夹中。
我现在的问题是,如果用户使用Chrome / Firefox,加载原始代码的最佳做法是什么,但如果他们使用Safari,则加载已转换的代码?我的头是否在这里的正确位置?
答案 0 :(得分:0)
检测是否正在使用safari:
var safariCheck = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor')> 0;
如果上述声明符合条件,您可以加载您想要的Safari代码。 如果没有,您可以加载Firefox或Chrome代码。
答案 1 :(得分:0)
检查功能最简洁的方法是使用Modernizer
使用此库,您可以使用以下代码检查浏览器是否已准备好es6功能:
if (Modernizr.es6array) {
loadNewCode();
} else {
loadOldCode();
}
您可以找到更多示例和文档here。