我有一个应用程序正在运行,它在Chrome和Firefox中运行良好 . Safari是另一个故事 . 为了举例,让我们假装这是我的应用程序:
'use strict';
const x = 3;
function test(){
let y = 4;
return y;
};
当我在Safari中运行它时,我得到:
SyntaxError: Unexpected keyword 'const'. Const declarations are not supported in strict mode.
然后,如果我删除'use strict',我得到:
SyntaxError: Unexpected identifier 'y'
在这一点上,我决定首先看看转换,所以我安装了Babel,我将客户端代码转换为ES5并坐在一个新文件夹中 .
我现在的问题是,如果用户使用Chrome / Firefox,加载原始代码的最佳做法是什么,但如果他们使用Safari,则加载已编译的代码?我的头是否在这里的正确位置?
2 回答
要检测是否正在使用safari:
var safariCheck = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor')> 0;
然后,如果上述语句符合条件,您可以加载您想要的safari代码 . 如果没有,您可以加载Firefox或Chrome代码 .
检查功能最干净的方法是使用Modernizer
使用此库,您可以使用以下代码检查浏览器是否已准备好es6功能:
您可以找到更多示例和文档here .