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

时间:2018-01-23 18:53:31

标签: javascript internet-explorer internet-explorer-11

我一直在我的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

有没有办法将bool值返回到“当前浏览器是否支持 ES6模板文字

的问题?

1 个答案:

答案 0 :(得分:4)

是。这是eval

的合法用途之一

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

它的工作原理是因为主代码解析了ES2015之前的JavaScript引擎,但eval 中的代码不是;解析模板文字上的扼流圈。

在Chrome,Firefox,Edge等上显示

Supports template literals? true

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

Supports template literals? false