更新:看起来像TimWolla评论的浏览器特定行为 - 我应该如何以跨浏览器的方式可靠地规范化非转义版本?
HTML:
<div id="test"><a href="#{one}">#{two}</a></div>
JS:
$('#test').html()
=> <a href="#%7Bone%7D">#{two}</a>
请注意,href中的#{one}
已转义,而#{two}
则未转义。
有没有比unescape
整个字符串更好的方法?
unescape($('#test').html())
=> <a href="#{one}">#{two}</a>
答案 0 :(得分:1)
首先,我怀疑你的问题是否有可靠的解决方案。根本原因很简单:因为下面工作的Element.innerHTML
是非标准的,它完全取决于浏览器的实现。
如果您需要可靠的解决方案,我建议您使用DOM操作而不是模板。
答案 1 :(得分:0)
如果您要在元素上通过JavaScript执行扩展,可以将“href”模板放在单独的属性中。
<a href='#dummy' data-href='#{template}'>Hi</a>
然后只需从data属性扩展并将结果放入真正的“href”。