Многие люди уже владеют Javascript, но когда они видят defer, они могут не знать, для чего он используется; многие люди также сталкивались с такой проблемой, и им нужно напрямую выполнять другие js и манипулировать объектами DOM и всегда сообщать об объекте; Ошибка не найдена. Как всем известно, причина в том, что страница еще не загружена, а объект операции js все еще загружается. Но многие люди не знают, что добавление тега defer может легко решить эту проблему.
<script src="../CGI-bin/delscript.js" defer></script>
Функция defer заключается в выполнении скрипта после загрузки документа, чтобы избежать проблемы с поиском объекта — небольшая проблема.
Скопируйте код кода следующим образом:
<button id="myButton" onclick="alert('ok')">тест</button>
<скрипт>
мояКнопка.клик();
</скрипт>
<скрипт>
мояКнопка.клик();
</скрипт>
<button id="myButton" onclick="alert('ok')">тест</button>
<отсрочка сценария>
функция document.body.onload() {
оповещение(document.body.offsetHeight);
}
</скрипт>
Добавление defer означает, что оно будет выполнено после полной загрузки страницы, что эквивалентно window.onload, но более гибко, чем window.onload в приложении!
Defer — «невоспетый герой» в сфере написания сценариев. Он сообщает браузеру, что сегмент сценария содержит код, который не нужно выполнять немедленно, и, используемый в сочетании с атрибутом SRC, также может привести к загрузке этих сценариев в фоновом режиме и отображению содержимого на переднем плане. пользователю в обычном режиме.
--Но выполнить скрипт после загрузки документа
Обратите внимание на два момента:
1. Не вызывайте команду document.write в сегменте сценария типа defer, поскольку document.write будет производить прямой вывод.
2. Более того, не включайте в сегмент сценария отсрочки какие-либо глобальные переменные или функции, которые будут использоваться сценарием немедленного выполнения.
Распространенным способом оптимизации производительности является установка атрибута «defer» в теге <SCRIPT>, когда сценарий не нужно запускать немедленно. (Непосредственный сценарий не содержится в функциональном блоке, поэтому он будет выполнен во время процесса загрузки.) После установки атрибута «defer» IE не нужно ждать загрузки и выполнения сценария. Таким образом страница будет загружаться быстрее. Вообще говоря, это также означает, что непосредственные сценарии лучше всего размещать в функциональных блоках и обрабатывать функцию в обработчике загрузки документа или объекта тела. Это свойство полезно при наличии сценариев, зависящих от действий пользователя, например нажатия кнопки или перемещения мыши в определенную область. Но когда есть некоторые сценарии, которые необходимо выполнить во время или после загрузки страницы, преимущества использования атрибута defer невелики.
Атрибут defer в скрипте по умолчанию имеет значение false. Согласно описанию в Руководстве по программированию DHTML, атрибут Defer записывается так:
Использование атрибута во время разработки может повысить производительность загрузки страницы, поскольку браузеру не нужно анализировать и выполнять сценарий, и вместо этого он может продолжить загрузку и анализ страницы.
Другими словами: если вы добавите атрибут defer при написании скрипта, браузеру не придется сразу его обрабатывать при загрузке скрипта, а продолжит загрузку и парсинг страницы, что улучшит производительность загрузки.
Таких ситуаций много. Например, если вы определяете множество переменных JavaScript или пишете множество сценариев в справочном файле (.inc), которые необходимо обработать, вы также можете добавить к этим сценариям атрибут defer, что определенно поможет повысить производительность. .
Примеры следующие:
Скопируйте код кода следующим образом:
<script Language="JavaScript" отложить>
вар объект = новый объект ();
....
</скрипт>
Поскольку атрибут defer по умолчанию имеет значение false, то здесь
<script Language="JavaScript" отложить>
Явное объявление атрибута defer эквивалентно
<script Language="javascript" defer=true>
После объявления атрибута defer необходимо определить, ссылаются ли другие переменные на переменные в блоке сценария defer, иначе произойдет ошибка сценария.