代码之家  ›  专栏  ›  技术社区  ›  Luke Hammer

如果浏览器不支持ES6模板文本,则创建错误消息

  •  2
  • Luke Hammer  · 技术社区  · 7 年前

    我一直在javascript中使用字符串文字。如果不支持字符串文字,我希望显示错误消息。 caniuse

    我的想法是创建一个函数,看看浏览器是否能正确解析插入字符串的字符串

        var supportsStringInterpulation = false;
    try {
        var stringInsert = 'is a';
        var stringTestExpected = "this " + stringInsert + " test";
        var stringTestAccual = `this ${stringInsert} test`;
        supportsStringInterpolation  = stringTestAccual === stringTestExpected;
    }
    catch (err) { console.error("failed to render ` ")}
    

    如果它是对的 什么都不做

    如果错误,则浏览器不支持,然后创建并给出错误消息。

    我现在的问题是,当我在IE 11中调试时,我的预期行为是,它将无法通过测试并发送 supportsStringInterpulation = false 进一步深入到我的代码,但它似乎中断并停止处理该脚本。

    问题1

    是否有方法将布尔值返回到问题“当前浏览器是否支持” ES6模板文本 ?

    1 回复  |  直到 7 年前
        1
  •  9
  •   T.J. Crowder    7 年前

    对这是合法使用 eval :

    var supportsTemplateLiterals = false;
    try {
        eval("`foo`");
        supportsTemplateLiterals = true;
    }
    catch (e) {
    }
    console.log("Supports template literals? " + supportsTemplateLiterals);

    这是因为主代码在ES2015之前的JavaScript引擎上解析,而 评估 ; 分析模板文本时受阻。

    在Chrome、Firefox、Edge等浏览器上

    Supports template literals? true
    

    在IE(任何版本)上,它显示:

    Supports template literals? false