HTML code:
<input id="txtSizeBeforeValue" type="text" size="5" value="blabla">
<input id="txtValueBeforeSize" type="text" value="blabla" size="5">
HTML解析代码:
<input id="txtSizeBeforeValue" type="text" value="blabla" size="5">
<input id="txtValueBeforeSize" type="text" size="5" value="blabla">
在这里你可以看到Firefox HTML解析器存在问题,标签属性与输入文本/按钮,textarea,canvas等每个HTML标签严重重新排序... 即使您编写了重新排序的标记属性,也会重新排序。 这个问题在Firebug和Firefox的HTML分析开发人员工具中可见,因此它不能成为Firebug问题。 谷歌浏览器没问题,因为HTML解析器不会重新排序标记属性。
你也有这个问题吗?在每个平台上?
答案 0 :(得分:3)
你应该责怪DOM重新排序而不是责备解析器。 (我在Firefox中编写了HTML解析器。)
在Firefox中,不同的属性在内部存储在不同的表示中(特别是被视为用于CSS目的的传统表示提示的属性)。当您看到重新排序的属性时,这意味着您在一个元素上拥有属于不同类型的内部存储桶的属性。
您会发现可以从IE的DOM中读取的属性顺序通常与源顺序不同。
这没关系。规范只要求命令是稳定的,所以如果你读取innerHTML两次而不改变它们之间的属性,你应该得到两次相同的序列化。
虽然属性的确切顺序是UA定义的,并且可能取决于诸如原始标记中给出属性的顺序等因素,但排序顺序必须是稳定的,这样该算法的连续调用序列化元素的属性顺序相同。
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#serializing-html-fragments
答案 1 :(得分:1)
HTML规范指出“它们可能以任何顺序出现。”
此处:http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.2
这不是错误!
但是你可以创建自己的工具......
答案 2 :(得分:0)
只要属性值正确分配,属性的顺序无关紧要