javascript - 为什么knockout-secure-binding会遇到这个语法错误

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

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

以下使用 Knockout 的默认绑定(bind)器,其中 plaintext 是返回字符串的可观察值:

 <section data-bind="foreach: plaintext().match(/.{1,17}/g)">

但是当尝试应用与 KSB 的绑定(bind)时,这个错误被记录到控制台:

{
   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 绑定(bind)提供程序允许任何有效的 JS 表达式。 KSB 的目的是改变这种行为,所以像这样的东西不再起作用是有道理的。

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

关于javascript - 为什么knockout-secure-binding会遇到这个语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57028136/

相关文章:

javascript - 访问对象并将其设置为 null throw 数组元素

javascript - Nginx 代理未按预期执行

javascript - 在纯 JavaScript 的表单输入中输入时如何禁止特定字符?

javascript - JQuery 未加载到 Chrome 扩展内容脚本中

javascript - Knockout 中的数据绑定(bind)更清晰?

javascript - 未捕获的 TypeError : this. props.xxx 不是 React 中的函数

javascript - 如何从 Chrome 扩展后台脚本访问页面变量

google-chrome-extension - Chrome 扩展程序可以在不同的用户配置文件下启动新的 Chrome 窗口吗?

javascript - 数据绑定(bind) ="click"不适用于嵌套的挖空 View 模型

javascript - knockout 设置下拉值