如何为某些浏览器加载某些脚本?

时间:2016-03-30 18:34:23

标签: javascript cross-browser transpiler

我有一个应用程序正在运行,它在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,则加载已转换的代码?我的头是否在这里的正确位置?

2 个答案:

答案 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