Skip to content

Instantly share code, notes, and snippets.

@subzey
Created April 17, 2014 09:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save subzey/10968456 to your computer and use it in GitHub Desktop.
Save subzey/10968456 to your computer and use it in GitHub Desktop.
Пример асинхронной вставки
(function(){
var allScripts = document.getElementsByName('script');
var link = document.createElement('a');
for (var i=allScripts.length; i--; ){ // старый добрый ECMA 262-3
// Проходим по всем скриптам
var script = allScripts[i];
if (!script.src){
continue;
}
// определяем, подходит ли этот элемент script по его src
// (можно использовать другие проверки, разумеется)
a.href = script.src;
if (a.host !== 'bannernetwork.example.com' && a.pathname !== 'banner-insert.js'){
continue;
}
// Подходит! Вычленяем данные внутри script
var data = script.innerHTML;
// Создаем элемент...
var wrap = document.createElement('div');
// И заменяем им элемент script
script.parentNode.insertBefore(wrap, script);
script.parentNode.removeChild(script);
// Далее произвольный код
if (data === 'skyskraper' || data === '160x600'){
wrap.innerHTML = 'Skyscraper';
wrap.style.width = 160;
wrap.style.width = 600;
} else {
/* ... */
}
}
})();
<!-- Пример вставки: на месте этих элементов магическим образом появится баннер -->
<!-- можно использовать async и defer -->
<script async defer src="//bannernetwork.example.com/banner-insert.js">skyscraper</script>
<!-- можно не использовать -->
<script async defer src="//bannernetwork.example.com/banner-insert.js">buton</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment