Можно ли загрузить последнее объявление javascript на страницу, чтобы предотвратить медленное время загрузки? - PullRequest
13 голосов
/ 18 января 2009

Есть ли способ включить загруженное в javascript объявление последним на странице, но позиционировано ли оно в содержании? Основная цель состоит в том, чтобы не допустить замедления загрузки страницы в объявлении javascript, поэтому, если есть другие способы для этого, пожалуйста, поделитесь.

Ответы [ 3 ]

10 голосов
/ 18 января 2009

Существует атрибут defer , который вы можете поместить в блоки скрипта, чтобы отложить его выполнение до завершения загрузки страницы.

<script src="myscript.js" type="text/javascript" defer>
// blah blah
</script>

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

РЕДАКТИРОВАТЬ: Как указал @David, используйте defer="defer" для XHTML

И вы всегда можете поместить код в событие window.onload, чтобы оно выполнялось после загрузки страниц:

window.onload = function () {
    // ad codes here

};

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

Подробнее о этом блоге Дина Эдвардса, парня, который написал знаменитый упаковщик javascript .


РЕДАКТИРОВАТЬ: Если проблема связана с размером рекламного кода, вы всегда можете отложить загрузку, комбинируя вышеуказанные методы с внедрением скрипта через document.write:

function loadScript(src) {
    document.write('<script src="' + src + '" type="text/javascript"></script>');
}

Таким образом, полученный код может выглядеть примерно так:

<script type="text/javascript" defer>

function loadScript(src) {
    document.write('<script src="' + src + '" type="text/javascript"></script>');
}

loadScript('http://ads.example.com/advertisements.js');

</script>

Но, как я уже сказал, это также зависит от конкретного рекламного кода, который вы получаете. Из-за позиции document.write напишет материал, который может оказаться не тем местом, которое вы хотите. Некоторые изменения могут быть необходимы.

1 голос
/ 18 января 2009
function addLoadEvent(func) {
      var oldonload = window.onload;
      if (typeof window.onload != 'function') {
        window.onload = func;
      } else {
        window.onload = function() {
          oldonload();
          func();
        }
      }
    }

Приведенный выше код является хорошим способом добавить новое событие загрузки, которое не мешает вашему существующему JavaScript. Затем вы можете добавить новое событие загрузки для загрузки рекламы, используя код ниже.

addLoadEvent(function() { // call to loadScript() here });
0 голосов
/ 04 ноября 2010

Я обычно ставлю тег для загрузки скрипта непосредственно перед тегом конца тела. Так что он загружается в конце страницы. Это не дает никаких ошибок валидации или чего-либо еще.

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