Что именно может вызвать ошибку «HIERARCHY_REQUEST_ERR: DOM Exception 3»? - PullRequest
181 голосов
/ 10 августа 2009

Как именно это относится к jQuery? Я знаю, что библиотека использует встроенные функции javascript для внутреннего использования, но что именно она пытается делать, когда возникает такая проблема?

Ответы [ 15 ]

0 голосов
/ 22 февраля 2013

Я получаю эту ошибку в IE9, если у меня отключена опция отладки скриптов (Internet Explorer). Если я включаю отладку сценария, я не вижу ошибки, и страница работает нормально. Кажется странным, что исключение DOM связано с включенной или отключенной отладкой.

0 голосов
/ 08 февраля 2013

Просто для справки.

IE будет блокировать добавление любого элемента, созданного в другом контексте окна, из контекста окна, к которому добавляется элемент.

например,

var childWindow = window.open('somepage.html');

//will throw the exception in IE
childWindow.document.body.appendChild(document.createElement('div'));

//will not throw exception in IE
childWindow.document.body.appendChild(childWindow.document.createElement('div'));

Я еще не понял, как создать элемент dom с jQuery, используя другой контекст окна.

0 голосов
/ 17 октября 2012

Другая причина, по которой это может появиться, заключается в том, что вы добавляете данные до того, как элемент готов, например,

<body>

<script>
document.body.appendChild(foo);
</script>

</body>
</html>

В этом случае вам нужно переместить скрипт после. Не совсем уверен, что это кошерно, но перемещение скрипта после тела, похоже, не помогает: /

Вместо перемещения скрипта вы также можете добавлять в обработчик событий.

0 голосов
/ 13 сентября 2012

Я знаю, что эта ветка старая, но я столкнулся с другой причиной проблемы, которая может оказаться полезной для других. Я получаю сообщение об ошибке, когда Google Analytics пытается добавить себя в комментарий HTML. Код обидчика:

document.documentElement.firstChild.appendChild(ga);

Это было причиной ошибки, потому что моим первым элементом был комментарий HTML (а именно код шаблона Dreamweaver).

<!-- #BeginTemplate "/Templates/default.dwt.php" -->

Я изменил код ошибки на что-то явно не пуленепробиваемое, но лучше:

document.documentElement.firstChild.nodeType===1 ? document.documentElement.firstChild.appendChild(ga) : document.documentElement.lastChild.appendChild(ga);
0 голосов
/ 21 марта 2012

Я получил эту ошибку, потому что забыл клонировать свой элемент.

// creates an error
clone = $("#thing");
clone.appendTo("#somediv");

// does not
clone = $("#thing").clone();
clone.appendTo("#somediv");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...