Je veux sérialiser des nœuds du DOM ou même des window
JSON.
Par exemple:
>> 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
Le problème est JSON ne prend pas en charge les références circulaires par défaut.
var obj = {}
obj.me = obj
JSON.stringify(obj) // TypeError: Converting circular structure to JSON
window
et les nœuds DOM avez beaucoup d'entre eux. window === window.window
ainsi que document.body.ownerDocument === document
.
Aussi, JSON.stringify
n'est pas sérialiser des fonctions, donc ce n'est pas ce que je cherche.
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":"#"}}
Bon, n'est-ce pas?
dojox.json.ref.toJson(window) // Error: Can't serialize DOM nodes
Bien pas assez bon pour moi.
Pourquoi?
Je suis en train de faire des DOM tableau de compatibilité pour les différents navigateurs. Par exemple, Webkit prend en charge l'espace réservé de l'attribut et de l'Opéra n'est pas, c'est à dire 8 supporte localStorage
et IE 7 ne fonctionne pas, et ainsi de suite.
Je ne veux pas faire des milliers de cas de test. Je veux faire de façon générique pour toutes les tester.
Mise À Jour Juin 2013
J'ai fait un prototype NV/dom-dom-dom.com.