可序列化的属性定义为:
- 当您设置元素的属性时,它将反映在序列化查询中
getAttribute
,您可以在 DOM Inspector 中看到更改 - 当您获取
.innerHTML
元素的父节点时,返回的 html 字符串将包含所有可序列化的属性作为它们的对应属性
我制作了一个页面,看起来它可靠地打印了input
Chrome 和 Firefox 中元素的所有可序列化属性的表格:http: //jsfiddle.net/tEVLp/16/。自定义属性永远不可序列化,因此在 FirefoxwebkitSpeech
等中不可序列化。测试铬以获得最佳效果。
所有布尔值都是true
因为属性的序列化false
将缺少属性,这在测试中是假阴性。
所以我的问题是,为什么不能序列化.value
和.checked
可序列化的属性?
从技术上讲,两者都是可序列化的。.value
只是一个字符串,浏览器在序列化其他布尔属性方面没有问题,例如.readOnly
and .disabled
。
我最好的猜测是,由于.defaultValue
序列化为"value"
-attribute 并.defaultChecked
序列化为"checked"
-attribute,因此会有冲突,因此
.value
and.checked
无法序列化。在那种情况下,为什么defaultX
选择这些而不是反映更有用的当前.value
和.checked
状态的那些?