保单或双引号的属性在浏览器(Preserving single or double quotes a

2019-11-03 09:39发布

我想将内容编辑专区内保持周围的HTML属性单或双引号,专门为innerHTML的。 我知道这是奇怪的要求,但我期待的可能性。 因此,可以说,我把HTML内容编辑的DIV从服务器:

<div class="editable">
    PRESS MENU BUTTON<img src='BUTTON_BACK.png' vspace='-16' width='32' height="32">
</div>

这应该被保留。 但是,目前在Firefox中,当我检查DOM,它只是将所有单引号周围的所有属性双引号。

所以,问题是:

  • 是否有任何浏览器配置,禁用此行为?
  • DTD怎么能在这种情况下有帮助(仅适用于可编辑的部分)?
  • 与其他任何景点?

编辑:此外,当我用的innerHTML得到div的内容,我得到它的内容的修改版本,单引号用双引号代替。 由于每SGML没有这样的要求使用双quotes.So它不仅是开发商唯一的工具引用属性。

我已经访问过SOQs 1 , 2 ,但我的问题是稍有不同。

Answer 1:

这些引号是不实际的DOM可言; 的DOM是一种数据结构,与用于属性值的字符串对象。 它不保留有关字符串是否是单或双引号的原始出处的任何信息,因为有两种形式之间在含义上没有区别。

您在Firefox的开发者工具看到的HTML是不是你的HTML源代码复印件; 它从DOM数据结构生成。 而且由于DOM不包括关于字符串是如何在原来的源代码引用的任何信息,开发工具生成从DOM新的HTML时只引用他们都在一个默认的方式。



Answer 2:

HTML是一种“结构化信息载体 ”,它本身不是信息。 这就像周围的信的信封。 HTML被用于从服务器到浏览器传送所需的DOM的结构信息。 一旦浏览器接收这些信息,“解压缩”,并构建DOM。 然后,它摒弃了HTML文本,因为它有它不再使用; 现在与DOM数据结构的工作。

有一个在DOM没有地方存储,使用什么样的报价,构建一个DOM元素的属性。 因为它是不相关的。 foo='bar'相当于100%至foo="bar"foo=bar在表达的属性及其在序列化形式值计。 它总是可能从DOM中的序列化形式; 换句话说,DOM可以随时被写入从头HTML。 您可以将HTML DOM→→HTML DOM→→HTML来回整天。 然而,HTML的特定格式不会坚持,因为它是不相关的,在转换被丢弃。

这就是你在DOM检查或看到的.innerHTML :当前的DOM的只是一种表象的序列化HTML表示。 有在关心的是HTML的特定格式,只要它表达了相同的信息是没有意义的。 不,你不能保护它。

如果你真的想要的,你必须向后弯腰,做了很多手工HTML处理。



文章来源: Preserving single or double quotes around attributes in browser