【发布时间】:2012-02-04 18:35:48
【问题描述】:
更新:似乎是 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>
【问题讨论】:
-
似乎这是一个特定于浏览器的问题。在 Googles v8 Engine 中它工作得很好。
-
该锚点似乎是一个模板。为什么要将模板解析为 DOM?模板应保存在源代码中(例如,在 SCRIPT 元素中)并使用 JavaScript 处理(并且只有 then 由浏览器解析)。
-
蒂姆沃拉:该死!更新了问题...
-
Šime Vidas:因为模板本身是动态的。相同的部分用于在服务器端呈现一些静态页面,以及由 js 模板化。我正在使用 Rails 3.2 并且“.js.coffee.erb”并不能解决这个问题,因为无法从 js 文件访问
render。 -
我已经updated your jsfiddle 来证明我的答案。 Firefox 不会混淆其他属性的值,只是“href”(可能还有“src”和其他类似 URL 的东西)。