为什么knockout-secure-binding会遇到这个语法错误
Why is this syntax error encountered in knockout-secure-binding
我正在使用 Knockout Secure Binding (KSB) 使 Knockout 与 Chrome 浏览器扩展中的内容安全策略兼容。
以下适用于 Knockout 的默认活页夹,其中 plaintext
是一个可观察值,returns 一个字符串:
<section data-bind="foreach: plaintext().match(/.{1,17}/g)">
但是当尝试应用与 KSB 的绑定时,控制台会记录此错误:
{
name: "SyntaxError",
message: "Expected ')' but got '/'",
at: 28,
text: "foreach: plaintext().match(/.{1,17}/g)"
}
由于 /
似乎是我尝试使用以下语法创建 RegExp 的问题:
<section data-bind="foreach: plaintext().match(new RegExp('.{1,17}', 'g'))">
但是KSB同样抱怨,这次:
{
name:"SyntaxError",
message:"Expected ')' but got 'n'",
at:28,
text:"foreach: plaintext().match(new RegExp('.{1,17}', 'g'))"
}
这表明它根本不会接受 match()
括号内的任何内容。在阅读文档和 repo 问题时,我没有发现任何关于不使用 KSB 的匹配或正则表达式。
我在这里错过了什么?
默认的 Knockout 绑定提供程序允许任何有效的 JS 表达式。 KSB 的目的是改变这种行为,所以像这样的东西不再起作用是有道理的。
您可能应该将您的正则表达式移动到计算的可观察量。
我正在使用 Knockout Secure Binding (KSB) 使 Knockout 与 Chrome 浏览器扩展中的内容安全策略兼容。
以下适用于 Knockout 的默认活页夹,其中 plaintext
是一个可观察值,returns 一个字符串:
<section data-bind="foreach: plaintext().match(/.{1,17}/g)">
但是当尝试应用与 KSB 的绑定时,控制台会记录此错误:
{
name: "SyntaxError",
message: "Expected ')' but got '/'",
at: 28,
text: "foreach: plaintext().match(/.{1,17}/g)"
}
由于 /
似乎是我尝试使用以下语法创建 RegExp 的问题:
<section data-bind="foreach: plaintext().match(new RegExp('.{1,17}', 'g'))">
但是KSB同样抱怨,这次:
{
name:"SyntaxError",
message:"Expected ')' but got 'n'",
at:28,
text:"foreach: plaintext().match(new RegExp('.{1,17}', 'g'))"
}
这表明它根本不会接受 match()
括号内的任何内容。在阅读文档和 repo 问题时,我没有发现任何关于不使用 KSB 的匹配或正则表达式。
我在这里错过了什么?
默认的 Knockout 绑定提供程序允许任何有效的 JS 表达式。 KSB 的目的是改变这种行为,所以像这样的东西不再起作用是有道理的。
您可能应该将您的正则表达式移动到计算的可观察量。