gpt4 book ai didi

javascript - 下划线模板在 IE 8 中失败并显示 "unexpected identifier"

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:59:36 25 4
gpt4 key购买 nike

我们有一个 Backbone/Marionette 网络应用程序。该应用程序在现代浏览器中运行良好,但在 IE8 中死机

SCRIPT1010: Expected identifier

调试器指向 Underscore.js 库中的一行,而不是我的代码中的一行。显然库中没有问题 - 我们的代码触发了这个问题。线路是这样的

var render = new Function(settings.variable || 'obj', '_', source);

可能是什么问题?

最佳答案

事实证明,这是我们的一个模板中的一个特定案例,这意味着在编译模板时,代码在现代浏览器中没有问题,但在 IE8 中却出现了不稳定的情况。

我们使用 serializeData 函数从我们的 View 传递数据和一些有用的字符串(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.continue 那样得到它,它必须是 obj["continue"]。

将 {{ messages.continue }} 替换为 {{ messages["continue"] }} 或重命名该属性可解决问题。

希望对某人有所帮助:)

罗布

关于javascript - 下划线模板在 IE 8 中失败并显示 "unexpected identifier",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16361555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com