这是我JSON模板的一部分的摘要
"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"),并将所有逃逸代码放入其中。现在,您的视野中有太多的逻辑;除其他外,如果您必须在实施某些内容安全策略的环境中运行(您可能必须使用诸如Secure Bindings插件之类的内容,这将咬您,这可能在绑定中不允许函数调用)。