【问题标题】:IE11 throwing "SCRIPT1014: invalid character" where all other browsers workIE11 在所有其他浏览器工作的地方抛出“SCRIPT1014:无效字符”
【发布时间】:2017-03-27 13:57:55
【问题描述】:

这是一个新的,IE11 在所有其他浏览器中都可以运行的代码上抛出错误。

无论如何,经过几个小时的“修复”代码以使 IE11 不会自行解决,我遇到了一个错误,我似乎无法找到解决方案。这是有问题的代码:

$('input[name="messageAccount"]').change(function () {
    $aButton.show();
    var addedIds = $("#hdnfield").val();
    if (addedIds == null || addedIds === "") {
        $("#hdnfield").val(this.value);
    } else {
        $("#hdnfield").val(`${addedIds}${this.value}`);
    };
});

这嵌套在 Ajax 请求中的成功调用内部。 IE 的调试器说错误来自else 语句的内容,但它也读取了所有括号错误。例如,此函数的左括号在 Ajax 请求的右括号之后被“关闭”...(希望这是有道理的)。

以前有没有人遇到过类似的 IE 问题?我还有许多其他错误要修复,所以如果有任何回复,我会尽快回复。提前致谢。

编辑:仅供参考,我目前在本地运行它,并将成为内部托管网络应用程序的一部分。

【问题讨论】:

  • 可能是因为IE11不支持template literals所以抱怨反引号。
  • 一般来说,如果你需要支持 Internet Explorer,你就不能使用当前十年的技术。
  • 不幸的是,这不是我亲自编写的代码,所以在浏览它时我完全没有注意到它们是反引号。问题已解决

标签: javascript jquery ajax


【解决方案1】:

这是因为 IE 不支持“`”(模板字符串):http://caniuse.com/#search=string

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

https://stackoverflow.com/a/27678299/2195875

为避免此错误,您可以使用 ES6 到 ES5 转译器,或者直接编写有效的 ES5 javascript:

而不是

`字符串文本${表达式}字符串文本`

"字符串文本"+表达式+"字符串文本"

【讨论】:

  • 我对 "let" 关键字的理解是一样的,希望 babel 能将它编译成对 IE 友好的东西
【解决方案2】:

你也可以在你的 html 中添加 polyfill:

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js"/>

【讨论】:

    猜你喜欢
    • 2018-11-09
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多