Ожидает ли JavaScript завершения этого события DOM? - PullRequest
0 голосов
/ 27 июля 2011

Предположим, я изменяю HTML DOM в строке 1. Могу ли я быть уверен, что строка 2 JavaScript будет работать с модификациями DOM, указанными в строке 1?

Это единственное объяснение, которое я могу придумать с некоторым ошибочным поведением, которое я имел в форме. Предполагается, что предыдущая строка обновляет DOM, но иногда DOM не обновляется, если его нет на следующей. Кажется, все работает нормально, когда я иду медленнее.

Ответы [ 2 ]

1 голос
/ 27 июля 2011

Обновление определенного свойства в элементе DOM происходит немедленно и должно сохраняться при последующем чтении этого свойства.

Если вы полагаетесь на это изменение для распространения по DOM, это может быть сложно.Например, например, изменение размера элемента и ожидание того, что элемент-брат сообщит о новой позиции смещения в результате - последний может может не произойти, пока стек не размотается.На самом деле я не знаю точных правил, но вы должны быть осторожны - и это иногда зависит от браузера.И, что еще страшно, иногда выдает предупреждение, чтобы помочь отладке, и это заставляет элементы сразу «реализовать» свой новый макет.Затем вы отключаете оповещение, и оно возвращается к ошибочному поведению.

Так что, если вы уверены, что изменение DOM не оказало немедленного воздействия, тогда иногда нужно вызывать "setTimeout"с функцией обратного вызова и значением времени 0. Когда обратный вызов таймера завершится, вы можете завершить последующую обработку.YMMV

1 голос
/ 27 июля 2011

Да, модификации Javascript DOM будут выполняться последовательно, если только вы не ожидаете асинхронного вызова AJAX для возврата.Следующая инструкция не произойдет, пока не выполнится первая.Однако, пожалуйста, покажите свой код!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...