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

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

Ответы

Ответ 1

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

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

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

EDIT: Как отметил @David, используйте defer="defer" для XHTML

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

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

};

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

Более подробную информацию о этом сообщении в блоге Дин Эдвардс, парень, который написал знаменитый javascript packer.


РЕДАКТИРОВАТЬ: Если размер самого рекламного кода является проблемой, вы всегда можете отложить загрузку, объединив вышеуказанные методы с помощью script injection через 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 будет записываться материал, который может не быть нужным вам местом. Могут потребоваться некоторые изменения.

Ответ 2

function addLoadEvent(func) {
      var oldonload = window.onload;
      if (typeof window.onload != 'function') {
        window.onload = func;
      } else {
        window.onload = function() {
          oldonload();
          func();
        }
      }
    }

Вышеприведенный код - отличный способ добавить новое событие onload, которое не мешает вашему существующему javascript. Затем вы можете добавить новое событие загрузки для загрузки рекламы с помощью кода ниже.

addLoadEvent(function() { // call to loadScript() here });

Ответ 3

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