gpt4 book ai didi

javascript - 属性值中字符引用的 innerHTML 不保留为转义序列。有什么办法解决吗?

转载 作者:搜寻专家 更新时间:2023-10-31 23:06:00 25 4
gpt4 key购买 nike

我将这样的代码放到 Firefox 中:

<div id="my">
<div title="&lt;b&gt; title &lt;/b&gt;">&lt;b&gt; text &lt;/b&gt;</div>
</div>

评估后:

document.getElementById("my").innerHTML

我得到了:

"<div title="<b> title </b>">&lt;b&gt; text &lt;/b&gt;</div>"

如您所见,title 属性已损坏...这是错误吗?

Playground 链接:http://jsfiddle.net/uGXQP/

更新 我在 Firefox 和 Opera 下运行测试 - 它被复制了。在 Chrome 上,它按预期工作。

更新 2 我发现了这个问题然后使用 http://code.google.com/p/canvg/项目。它有主例程,需要 SVG 作为字符串作为输入参数。这样做的自然方法是使用 innerHTML...

所以这个库将 DOM 解析为字符串并且无法正确处理 > 将其字符化为属性值...

最佳答案

innerHTML 属性通常不会为您提供 HTML 源文档中的标记。相反,它执行 DOM 中元素内容的序列化。目前还没有这方面的标准,但 HTML5 CR 指定了 serializing HTML fragments 的规则, 和 DOM Parsing and Serialization WD 根据此类序列化定义了 innerHTML。这意味着标记的许多部分将被规范化,这包括在属性值中字符“<”出现的原则。如果它在 HTML 中被写成 <,它在解析过程中已被转换为“<”——DOM 没有关于用于表示“<”的原始语法的信息。不幸的是,有些浏览器会出错。

无论如何,如果你想让一个属性值包含四个字符<,你需要这样写,这样&符号就被转义了:&lt; .

关于javascript - 属性值中字符引用的 innerHTML 不保留为转义序列。有什么办法解决吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18059087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com