首页 文章

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

提问于
浏览 946
0

我有一个应用程序正在运行,它在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 回答

  • 0

    要检测是否正在使用safari:

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

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

  • 0

    检查功能最干净的方法是使用Modernizer

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

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

    您可以找到更多示例和文档here .

相关问题