Разве javaScript не является частью DOM? - PullRequest
4 голосов
/ 25 апреля 2010

Почему сценарии могут функционировать даже после удаления кода, использованного для их создания, из DOM?

Я столкнулся с ситуацией, когда хотел предотвратить запуск неработающего скрипта ( @ см. Мой пост ).

В попытке найти решение я написал расширение со следующей строкой (просто чтобы посмотреть, что произойдет) .

$('script', doc).remove();
/*doc is passed here because this script is running as a firefox extension 
  outside of the document context.*/

Я предполагал, что это удалит все сценарии из DOM, что он и сделал, и поэтому на странице не будет запущено ни одного сценария, что не так.

Мне бы хотелось узнать больше о том, что стоит за этим поведением.

Ответы [ 2 ]

8 голосов
/ 25 апреля 2010

Сценарий, конечно, является частью DOM, но результат выполнения этого сценария оставлен на усмотрение движка javascript. Удаление источника скрипта (той части, которая находится в DOM) не удалит существующие переменные в памяти движка.

2 голосов
/ 25 апреля 2010

Это правильно, что Javascript не является частью DOM (и наоборот). Действительно, на недавней конференции ACM Connections / Reflections я был приглашенным докладчиком, другим был гуру Javascript Дуглас Крокфорд, и у нас были интересные чаты - я был удивлен, узнав от него, что комитет, который работает над стандартизацией DOM (в w3c) и тот, который работает над стандартизацией Javascript (в ECMA), не имеет никакого совпадения, никакой координации и фактически едва знает о существовании и работе друг друга (но, очевидно, не более удивлен, чем сам Крокфорд, узнав об этом странном факте; -.)

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