Срабатывает уже в принудительном порядке в jQuery? - PullRequest
3 голосов
/ 13 ноября 2009

Поскольку размещение методов DOM javascript в нижней части html-страницы (после ) намного быстрее, чем использование события jQuery 'ready', не следует ли форсировать его, выполнив:

$('document').trigger('ready');

... после тега body? Я действительно не пробовал это, но это должно ускорить процесс. Или я что-то пропустил?

Ответы [ 3 ]

6 голосов
/ 18 ноября 2009

jQuery.ready ();

1 голос
/ 13 ноября 2009

Событие ready означает, что документ был проанализирован, и DOM доступен для работы. Это происходит, когда браузер завершил синтаксический анализ, и вы не можете сделать это раньше.

Как ты думаешь, как это сработает? Будет ли он щелкнуть волшебным переключателем в HTML-парсере браузера, который заставит его работать быстрее, чем обычно? Не приведет ли это к быстродействию процессора компьютера, чтобы браузер завершил анализ документа раньше?

Вы не можете заставить браузер анализировать документ быстрее, чем когда-либо. Даже с jQuery; -)

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

У меня был тесно связанный вопрос, я сам нашел ответ прямо перед тем, как отправлять сообщения в SO. Поскольку люди, у которых есть мой вопрос, скорее всего, окажутся здесь (результат номер один в Google по запросу "jquery force document ready"), позвольте мне дать дополнительную информацию.

Моя проблема в том, что я динамически генерирую некоторый HTML (используя XSLT), который иногда будет сохранен на потом, но в других случаях я просто хочу открыть новое окно с новым HTML, чтобы пользователь мог его предварительно просмотреть. Вот так:

var html = UseXSLTToGenerateSomeHTML();
var myWindow = window.open('', '', 'width=805,height=493');
myWindow.document.write(html);
myWindow.focus();

Проблема в том, что сгенерированный HTML использует jQuery, а событие domready никогда не вызывалось. Из ответа Дэвида мне следовало сразу понять, как это сделать, но трюк на мгновение ускользнул от меня. Это:

var html = UseXSLTToGenerateSomeHTML();
var myWindow = window.open('', '', 'width=805,height=493');
myWindow.document.write(html);
myWindow.focus();
mywindow.jQuery.ready();

Обратите внимание, что в этом случае страница, на которой это делается, даже не использует jQuery ... только сгенерированный HTML. Неважно, вы генерируете событие jQuery для другого документа.

...