2017-02-06 7 views
-1

Для тестирования я решил проверить функцию, которую я написал, которая возвращает объект DOMRect.JSON.stringify & DOMRect

В консоли я вижу, что DOMRect не поврежден и обладает всеми его свойствами. Однако, когда у меня есть JSON.stringify(rect) (где rect - переменная с результатом возврата), я получаю пустой объект {}.

Не знаю, означает ли это, что есть что-то особенное в DOMRect, или JSON.stringify не делает то, что я думал, что это будет делать, чтобы сериализовать свойства объекта.

Возникает вопрос: почему не будет JSON.stringify работы на DOMRect (и это также не на некоторых других obects

FWIW, я тестирование на текущий Mac, и попытался как Firefox и . Webkit

ответ

2

JSON.stringify() не может быть использован на любом элементе DOM. -. Вам нужно будет вытащить данные, которые вы хотите и поместить в Объект. Ранее JSON.stringify() на узлах DOM, используемых для достижения этого erro г:

TypeError: Converting circular structure to JSON 

Теперь Chrome, Firefox и т.д. всех выходных "{}"

+0

Не могли бы вы уточнить этот момент? 'JSON.stringify' не работает над _any_ dom объектом? Достаточно справедливо, я полагаю, но это кажется странным - это не так, как если бы ценности были динамическими. Сообщение о круговой структуре кажется странным. – Manngo

+0

correct - '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 работает только на структурированных данных Это не позволяет stringification функций

-1

DOMRect является функцией так, JSON.stringify() не допускается, так как DOMRect содержит 'виртуальные' свойства. JSON.stringify() зависит от Object.key (attr).

 Смежные вопросы

  • Нет связанных вопросов^_^