这是我的JSON模板的一部分片段,我正在努力正确地逃避一些内联JS:
"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\")
)。有什么想法吗?
答案 0 :(得分:0)
因为没有人有勇气穿过我的JSON肮脏的沼泽(谁可以诚实地责怪任何人不想要?),我决定通过在我的模型中添加一个名为{{1的模型来绕过我的问题它只是返回上面发布的内联淘汰JS。但是,我仍然想知道如何正确转义上述代码(如果可能的话)!
答案 1 :(得分:0)
我倾向于创建一个自定义绑定处理程序(例如“url”)并将所有转义代码放入其中。现在你的观点中有太多的逻辑;除此之外,如果你必须在一个实现某些内容安全策略的环境中运行(你可能必须使用类似于secure-bindings插件的东西,它不允许在绑定中进行函数调用),这将会咬你。