我一直在我的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模板文字?
的问题?答案 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