Javascript 无法从JSON模板正确转义内联JS
下面是我的JSON模板中的一个片段,我正在努力正确地转义一些内联JS:Javascript 无法从JSON模板正确转义内联JS,javascript,json,knockout.js,Javascript,Json,Knockout.js,下面是我的JSON模板中的一个片段,我正在努力正确地转义一些内联JS: "output" : "... <a data-bind=\"attr: { href: '/click?url=' + encodeURIComponent(imageLnk()) .replace(/'/g,\"%27\") .replace(/"/g,\"%22\"), onclick: '
"output" : "...
<a data-bind=\"attr: { href: '/click?url=' +
encodeURIComponent(imageLnk())
.replace(/'/g,\"%27\")
.replace(/"/g,\"%22\"),
onclick: 'return sl(this,\\'nw\\',\\'' + $root.moduleId() + '_i' +
$data.index() + '-1\\');' }\">
<img data-bind=\"attr: { src: imageSrc, alt: imageAlt }\">
</a>
..."
“输出”:。。。
..."
忽略我的空白。我加上它是为了清晰
我的问题是在
.replace(/“/g,\%27\”).replace(/“/g,\%22\”)
部分中转义引号(”
和“
”)。有什么想法吗?因为没有人有胆量涉过我的JSON(谁能诚实地责怪任何人不想这么做?),我决定通过在我的模型上附加一个名为encodeLink
的函数来回避我的问题,该函数只返回上面发布的内联淘汰JS。然而,我仍然想知道如何正确地转义上面的代码(如果可能的话) 我倾向于创建一个自定义绑定处理程序(例如“url”),并将所有转义代码放在其中。现在你的观点有太多的逻辑;除此之外,如果您必须在实现某些内容安全策略的环境中运行(您可能必须使用安全绑定插件之类的东西,该插件不允许在绑定中调用函数),这将对您造成不利影响