Добрый день!
Появилась необходимость подгружать js-код одной партнерки в асинхронном режиме. Сайт открывается очень-очень быстро, в то время как сервер партнерки часто находится под ддосом, по их словам, и блок иногда долго пустует. И конечно-же очень напрягает курсор в фоновом режиме.
Не хотелось использовать какие-то сторонние библиотеки, ведь друпал снабжен jquery, да и ctools стоит.
Как с помощью этих инструментов сделать подгрузку js.
В ctools есть ctools_add_js(), но как им пользоваться не разобрался, мне нужно подгружать не результаты работы скрипта, а сам скрипт.
Комментарии
var s = document.createElement('script');
s.src = 'url';
s.setAttribute('async', 'true');
document.documentElement.firstChild.appendChild(s);
})();
С большой верноятностью банерорезалка накернит этот код и будет облом.
$.get.Script();
})($);
Альтернатива: переписать код на срабатывание по другому условию
1. аналог быстрого defer на jquery
...
success: function(){
$.get.Script('http://source.path');
}
});
2. воткнуть напрямую:
<script src="" async="async"></script>
назови хоть одну, которая накернит
любая их тех, что настраиваются руками и позволяют импортировать уже подготовленный набор паттернов
Просто в этом коде нет смысла. Ты на IIFE вешаешь ижектор скрипта в дом(тот же эффект если пропишень тупо напрямую).
например
тупо напрямую эффект не будет асинхронным
атрибут async для кого придумали? отличие лишь в том, что загрузка начнется в тот момент, когда документ распарсится до твоей IIFE. Реализация может быть какой угодно. Если ты пишешь какую-то логику, то никто не ограничивает в реализации, но вот такой подход -- это как бы отстой(только не надо щас GA в пример приводить, там расчет на то чтобы проще воткнуть).
http://www.w3schools.com/Ajax/ajax_intro.asp
http://www.w3schools.com/ajax/default.asp
http://www.w3schools.com/html5/att_script_async.asp
http://www.w3schools.com/html5/att_script_defer.asp
Если ты волнуешься за ишака, то через $.get.Script проблема точно решится. Как плюс: не грузим если не надо, грузим в том момент когда надо. Предусматривает другие обработчики, если надо.
Если ты не понял, то это полностью эквивалентно этому:
<script src="" async="async"></script>
</head>
за исключение этого:
сделано это для осла, потому что плохо написана логика
p.s.: если тебе интересно капельку больше, просто промониторь страницу с метрикой и сравни с GA(defer срабатывает через 15 секунд после распарса, async якобы фоном грузтся но это тупо просто потому что у тебя инжектор в теле а не в башке). Все станет понятно
p.s.: а ещ] могу тебе сказать, что получать скрипты через http: несколько быстрее чем через https, который временно блокирует загрузку. Ну и я не говорю про редиректы
для наших детей и правнуков
аргументы? по пунктам пожалуйста
проще воткнуть 6 строчек вместо одной? кому проще?
какбэ у get.Script защита от кеширования
что мешает сделать это в случае document.createElement('script');?
и да:
пример то будет нет?
не фэйли так сильно на ночь глядя
иди в школу )
другого не ожидал
не обижайся