2017-02-06 10 views
-1

テスト目的のために、私はDOMRectオブジェクトを返す書いた関数をテストすることにしました。JSON.stringify&DOMRect

コンソールでは、DOMRectが完全であり、すべてのプロパティを保持していることがわかります。しかし、私はJSON.stringify(rect)(rectは返された結果の変数です)を持っているとき、私は空のオブジェクト{}を取得します。

DOMRectについて特別なことがあるかどうか、またはJSON.stringifyがオブジェクトのプロパティをシリアル化すると思ったことをしないかどうかはわかりません。

質問です:?なぜDOMRectのJSON.stringify動作しません(と、それはまた、いくつかの他のobectsに失敗します

FWIW、私は現在のMac上でテストしていて、両方のFirefoxを試してみましたし、 。Webkitの

答えて

2

JSON.stringify()は、任意のDOM要素で使用することはできません - 。。あなたが望むデータを引き出し、に配置する必要があります以前はJSON.stringify()のDOMノードでこのエラーが発生していましたR:など

TypeError: Converting circular structure to JSON 

今クロム、Firefoxの、すべての出力"{}"

+0

その点を明確にできますか? 'JSON.stringify'は_any_domオブジェクトでは動作しませんか?十分に公正だと思いますが、それは奇妙に思えます - 値が動的であるかのようにではありません。円形の構造のメッセージは見知らぬようです。 – Manngo

+0

正しい - 'JSON.stringify()'はどんなDOMノードでも動作しません。参照:http://stackoverflow.com/questions/2303713/how-to-serialize-dom-node-to-json-even-if-there-are-circular-references – hackerrdave

+1

ご協力ありがとうございます。本当に必要なのはコンテンツだけだったので、DOMRectコンテンツを新しいオブジェクトにコピーするのが便利だと分かっています。また、私はそれを少しカスタマイズして、特定のブラウザのためにポリフィルするチャンスを与えてくれます。 – Manngo

-1

JSON.stringifyが唯一の構造化データ上で動作しますこれは、機能の文字列化することはできません

-1

DOMRectはとても機能あるDOMRectは、 '仮想' のプロパティが含まれているため、JSON.stringify()は許可されません。 JSON.stringify()はObject.key(attr)に依存します。