2013-11-19 3 views
3

У меня есть следующий сценарий Js ссылается на нижней части страницы:Отложить загрузку js как?

<script src="http://example.com/test.js" type="text/javascript"></script> 

Google PageSpeed ​​предложение отложить загрузку этого Js. Я не совсем понимаю, как это сделать или последствия. Может кто-нибудь объяснить?

+1

Кому важно то, что страница говорит, важный вопрос: *** может *** отложить сценарий, или, другими словами, это что-то неважное, что не имеет значения, загружен ли он после загрузки всего остального. – adeneo

+0

Возможно, это будет больше усилий, чем это стоит - 'defer' совместим только с более новыми браузерами, и я думаю, что это помогает, только если скрипт объявлен в' '. Однако, если он * * перемещен, и браузер не знает 'defer', то он испортит выполнение, запустив слишком рано. – Katana314

ответ

3

Добавление атрибута defer в тег <script> должно сделать это. Например:

<script src="http://example.com/test.js" type="text/javascript" defer></script> 

Идея заключается в том, что сценарий в файле выполняется только после того, как вся завершения загрузки страницы, в отличие от стандартного способа, когда скрипт выполняется, как только браузер разбирает <script> тег (который может задержать предоставление кода после <script> тега)

1

Вы можете использовать атрибут async

<script src="http://example.com/test.js" type="text/javascript" async></script> 

. Примечание:

Атрибут async поддерживается в Internet Explorer 10, Firefox, Opera, Chrome и Safari.

+1

Мне нравится этот вариант лучше. любые недостатки? –

2

Ни один из этих методов не действительно гарантированно казнены. Проверьте эту замечательную статью о том, как убедиться, что внешние javascript-исполнения действительно деиствительны.
feedthebot deffer execute javascript

написанный Patrick Sexton

0

асинхронном не может быть хорошим вариантом, когда есть зависимости от одного JS в другой JS. Напр. file1.js зависит от file2.js, а file1.js загружает сначала, запускает выполнение, но сбой и выдает ошибку из-за некоторой зависимости в файле file2.js, который еще не загружен.

Смежные вопросы