【发布时间】:2012-06-28 18:37:34
【问题描述】:
我们有一些自定义的 JS 脚本来处理工具提示,这些脚本在我们渲染页面时放在一个 dom 属性(工具提示)中。
但是,当我尝试检索此工具提示(显示为 div)时,javaScript 似乎会自动取消转义属性值。这是正常行为吗?有没有办法避免这种情况?
我遇到的问题是
复制示例:
<div tltip ="<text>" id="escaped" />
<div tltip ="<text>"id="notescaped" />
js:
a = document.getElementById("escaped").getAttribute("tooltip");
b = document.getElementById("notescaped").getAttribute("tooltip");
a.match("<"); //returns true (unexpected)
a.match("<"); //returns true (expected)
a == b; // returns true (unexpected)
编辑:
澄清我试图显示一个(div)工具提示,我想以某种方式阅读内容,例如:
"<b> &lt;email@example.com&gt <\b>" 来自 dom 并将其显示在一个 div 中,它应该看起来像:“
【问题讨论】:
-
我认为浏览器在解析 HTML 并创建 DOM 时会自动执行此操作。
-
你不应该真的需要编码字符。只需将属性值添加到
<div>作为文本节点,不使用innerHTML。 -
问题是我不希望它作为文本节点我希望粗体标签也能工作,但我不想将括号中的电子邮件地址解释为(无效的 html),这就是为什么电子邮件括号在属性中是 htlmEscaped (而不是粗体标签)。我的问题在于转义和未转义的括号都被视为相同。
-
我目前正在双重转义电子邮件地址,但这感觉有点 hacky
标签: javascript html dom