Вот пример, в котором перед появлением рекламы, на определенное время появляется баннер загрузки, в соответствующем месте.
<script type=\"text/javascript\">
function replaceNode(source, target, call) {
var delay = 2; // время в секундах, в течении которого показываем баннер загрузки
var targetEl = document.getElementById(target);
var sourceEl = document.getElementById(source);
if (call === undefined) {
/* Если блок не отобразил текст рекламы, то баннер загрузки вообще не показываем (чтоб зря не беспокоить юзера).
Так как innerText не работает в файрфоксе, то берем innerHTML и вырезаем из него все скрипты и тэги, то есть оставляем
только \"полезный\" текст.
Я использую stripScripts, stripTags, и strip яваскриптового фреймворка Prototype, но здесь
достаточно вырезать все скрипты и тег link при помощи регулярных выражений, или просто выкинуть следующие
4 строки кода, если неохота заморачиваться. */
var advTxt = sourceEl.innerHTML;
advTxt = advTxt.stripScripts().stripTags().strip();
if (!advTxt) return;
targetEl.style.display = 'block';
// функция вызовет себя через время delay секунд
window.setTimeout(function (){replaceNode(source, target, 'true');}, delay*1000);
return;
}
// попадаем сюда при повторном вызове
targetEl.innerHTML = '';
targetEl.appendChild(sourceEl);
sourceEl.style.display = 'block';
}
</script>
...
Текст страницы
...
<div id=\"Target\">
Через пару секунд здесь появится реклама
</div>
:
Текст страницы
:
// Перевешиваем рекламу.
// Функцию можно вызывать и для нескольких различных блоков (директ, адсенс итп), указываем соответствующие id источника и приемника.
<div id=\"Source\" style=\"display:none;\">
Блок с рекламой
</div>
replaceNode('Source', 'Target');
setTimeout('
e=document.createElement("script");
e.setAttribute("src","myscript.js");
e.setAttribute("type","text/javascript");
document.getElementsByTagName("head")[0].appendChild(e)',
1);
document.getElementById('adv_place_1').appendChild(document.getElementById('adv_block_1'));
© Copyright 2008-2012 by KDG