在某些浏览器中,jquery的.html()方法会取消转义已转义的HTML字符。

5

这是我的代码:

console.log($('p').html())

<p><span data-htmlContent="&lt;p&gt;This is not really in a p tag.&lt;/p&gt;">.</span>.</p>

在Chrome和旧版FireFox中,控制台记录如下:<span data-htmlcontent="&lt;p&gt;This is not really in a p tag.&lt;/p&gt;">.</span>.

但在IE和新版FireFox中,它记录如下:<span data-htmlcontent="<p>This is not really in a p tag.</p>">.</span>.

问题可以在此处看到:http://jsfiddle.net/Nzj52/9/


1
我在FF24和ie10中得到了相同的结果。 - megawac
@megawac,真让人沮丧啊。在旧版本的FF中它是可以运行的,但是当我更新后就像你说的一样出问题了。我会编辑问题的。 - tylertrotter
2
问题与正则表达式无关:问题在于HTML函数(即“oldHtml”字符串)中的<和>未被转义,即使它们在属性中也是如此。应该修复此问题以删除所有有关正则表达式的引用并包含相关部分。 - Denys Séguret
请注意,这不是 jQuery 的 bug,它更像是 innerHTML 访问器的一个 bug。 - Denys Séguret
@dystroy非常有帮助。我一直在错误的地方寻找答案。我已经修改了问题,删除了正则表达式部分。 - tylertrotter
显示剩余2条评论
1个回答

0
这可能与每个浏览器的控制台操作与渲染操作有关。如果你使用alert而不是console.log,会改变你的答案吗?
尝试调用console.log($('p').text()),而不是console.log($('p').html())。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接