下划线模板使用“意外标识符”失败.在ie8中
Underscore templates failing with "unexpected identifier" in IE 8
我们有一个骨干网/木偶网络应用程序。该应用程序在现代浏览器中运行良好,但在IE8中出现
就会死机。SCRIPT1010: Expected identifier
调试器指向Underscore.js库深处的一行,而不是我的代码。显然库中没有问题——是我们的代码触发了这个问题。行是这样的
var render = new Function(settings.variable || 'obj', '_', source);
有什么问题吗?
这是我们的一个模板中的一个特殊情况,这意味着当模板被编译时,代码在现代浏览器中很好,但在IE8中却不稳定。
我们正在使用serializeData函数从视图中传入一些有用的字符串,就像这样(coffeescript,但你明白了):
...
serializeData: ->
data = super()
data.messages = {
intro: "Welcome to the app"
continue: "Click here to continue"
}
return data
...
然后在模板中引用它,像这样
<h1>{{ messages.intro }}</h1>
<a href="...">{{ messages.continue }}</h1>
这个问题来自于"continue"是一个保留词。Coffeescript很好,它允许你在对象定义中使用它作为键而不加引号,而且在更现代的浏览器中,在常规JS中,它们似乎可以使用不加引号的键(尽管通常会建议这样做)。
然而,在IE8中,你可能不会像obj = {continue: "foo"}那样设置它,你可能不会像obj那样得到它。继续,必须是obj[" Continue "]。
替换{{消息。使用{{messages[" Continue "]}}或重命名属性可以解决此问题。
希望能帮到别人:)
Rob相关文章:
- 未捕获的SyntaxError:具有服务器变量的意外标识符
- Chrome 的 Javascript 控制台中的意外标识符
- AngularJS:POST $http意外标识符
- jQuery.ajax Uncatch SyntaxError: 意外标识符
- Ajax响应成功,但无法使用数据(未捕获语法错误:意外标识符)
- 一个javascript函数导致“;意外标识符”;来自不同函数的错误
- 未捕获的语法错误:if/else上的意外标识符
- 使用带有es6的文件时,服务器端SyntaxError意外标识符
- 书签时 JavaScript 意外标识符
- 输入标记的意外标识符
- JavaScript + PHP 未捕获的语法错误意外标识符
- 未捕获的语法错误:带有 .append() 字符串的意外标识符
- 意外标识符每日奖励功能
- 未捕获的语法错误:Java 中使用 Grails 的意外标识符
- 尝试使用 javascript/jQuery 插入 HTML 时出现意外标识符
- jquery 中的“未捕获语法错误:意外标识符”错误
- 意外标识符 javascript
- JSON href .append 意外标识符
- 函数调用的意外标识符
- 下划线模板使用“意外标识符”失败.在ie8中