我希望保留html属性的单引号或双引号,特别是内容可编辑div中的innerHTML。我知道这是一个奇怪的要求,但我正在寻找可能性。所以我想把html放在来自服务器的内容可编辑div中:
<div class="editable">
PRESS MENU BUTTON<img src='BUTTON_BACK.png' vspace='-16' width='32' height="32">
</div>
这应该保留。但是目前在firefox中,当我检查DOM时,它只是将所有单引号转换为围绕所有属性的双引号。
所以问题是:
编辑: 此外,当我通过innerHTML获取div的内容时,我得到其内容的修改版本,单引号被双引号替换。作为per SGML,没有必要使用双引号引用属性。所以它不仅仅是开发人员工具。
答案 0 :(得分:2)
那些引号实际上并不在DOM中; DOM是一种数据结构,具有属性值的字符串对象。它没有保留关于字符串在原始来源中是单引号还是双引号的任何信息,因为两种形式之间的含义没有区别。
您在Firefox的开发人员工具中看到的HTML不是HTML源代码的副本;它是从DOM数据结构生成的。由于DOM没有包含有关如何在原始源代码中引用字符串的任何信息,因此开发人员工具在从DOM生成新HTML时以默认方式引用它们。
答案 1 :(得分:2)
HTML是结构化信息的&#34; 运营商,它本身不是信息。它就像一封信的信封。 HTML用于将所需DOM的结构信息从服务器传送到浏览器。一旦浏览器收到这些信息,它就会解压缩&#34;它并构造DOM。然后它丢弃HTML文本,因为它没有进一步使用它;它现在正在使用DOM数据结构。
DOM中没有用于存储用于构造DOM元素属性的引号的地方。因为它无关紧要。在表达属性及其序列化形式的值方面,foo='bar'
与foo="bar"
到foo=bar
100%相等。始终可以从DOM派生序列化表单;换句话说,DOM总是可以从头开始再次写入HTML。您可以整天转换HTML→DOM→HTML→DOM→HTML。但是,HTML的特定格式不会粘连,因为它不相关并在转换中被丢弃。
您在DOM检查器或.innerHTML
中看到的内容:只是以序列化HTML表示的当前DOM的表示形式。只要它表达相同的信息,关心HTML的特定格式就没有意义了。不,你不能保留它。
如果你真的真的想要这样,你就不得不向后弯腰并做很多手工HTML处理。