我想将DOM节点甚至整个序列化为windowJSON。
例如:
>> serialize(document)
-> {
"URL": "http://stackoverflow.com/posts/2303713",
"body": {
"aLink": "",
"attributes": [
"getNamedItem": "function getNamedItem() { [native code] }",
...
],
...
"ownerDocument": "#" // recursive link here
},
...
}
JSON.stringify()
JSON.stringify(window) // TypeError: Converting circular structure to JSON
问题是JSON默认情况下不支持循环引用。
var obj = {}
obj.me = obj
JSON.stringify(obj) // TypeError: Converting circular structure to JSON
window和DOM节点有很多。window === window.window一如既往document.body.ownerDocument === document。
另外,JSON.stringify不会序列化函数,所以这不是我想要的。
dojox.json.ref
`dojox.json.ref.toJson()` can easily serialize object with circular references:
var obj = {}
obj.me = obj
dojox.json.ref.toJson(obj); // {"me":{"$ref":"#"}}
好,不是吗?
dojox.json.ref.toJson(window) // Error: Can't serialize DOM nodes
对我来说还不够好。
为什么?
我正在尝试为不同的浏览器创建DOM兼容性表。例如,Webkit支持占位符属性,Opera不支持,IE 8不支持localStorageIE 7,等等。
我不想做成千上万的测试用例。我想以通用的方式测试它们。
猛跑小猪
慕斯王
相关分类