0

我有一个应用程序启动并运行,它在 Chrome 和 Firefox 中运行良好。Safari 是另一回事。为了举例,让我们假设这是我的应用程序:

'use strict';

const x = 3;

function test(){
  let y = 4;
  return y;
};

当我在 Safari 中运行它时,我得到:

SyntaxError:意外的关键字“const”。严格模式不支持 const 声明。

然后,如果我删除“使用严格”,我会得到:

SyntaxError:意外的标识符“y”

在这一点上,我决定首先看一下转译,所以我安装了 Babel,并将我的客户端代码转换为 ES5 并放在一个新文件夹中。

我现在的问题是,如果用户使用的是 Chrome/Firefox,那么加载原始代码的最佳做法是什么,但如果他们使用的是 Safari,则加载转译的代码是什么?我的头在这里是否正确?

4

2 回答 2

0

要检测是否正在使用 Safari:

var safariCheck=Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;

然后,如果上述语句符合条件,您可以加载您想要的 safari 代码。如果没有,您可以加载 Firefox 或 Chrome 代码。

于 2016-03-30T18:43:05.977 回答
0

检查功能的最简洁方法是使用Modernizer

使用此库,您可以使用以下代码检查浏览器是否已准备好 es6 功能:

 if (Modernizr.es6array) {
    loadNewCode();
  } else {
    loadOldCode();
  }

您可以在此处找到更多示例和文档。

于 2016-03-30T18:56:29.273 回答