为什么在敲除安全绑定中遇到此语法错误

时间:2019-07-14 14:11:06

标签: javascript google-chrome-extension knockout.js content-security-policy knockout-3.0

我正在使用Knockout Secure Binding(KSB)使淘汰赛与Chrome浏览器扩展程序中的内容安全策略兼容。

以下内容适用于Knockout的默认活页夹,其中plaintext是可观察到的值,它返回一个字符串:

 <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()中根本不会接受任何内容。在阅读文档和回购问题时,我没有发现不与KSB搭配使用match或regex的任何知识。

我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

默认的Knockout绑定提供程序允许任何有效的JS表达式。 KSB的目的是改变这种行为,因此在某种意义上说类似的东西将不再起作用。

您可能应该将正则表达式移动到计算出的可观察值。