Как я могу загрузить рекламный код последним на странице или асинхронно, если объявление использует document.write? - PullRequest
1 голос
/ 14 декабря 2010

Я помогаю с веб-сайтом, и у нас возникают проблемы со временем загрузки страницы из-за рекламы, которая иногда загружается за несколько секунд.Поскольку объявления вызываются с помощью тегов , браузер прекращает анализ страницы, пока объявления не будут полностью загружены.Мы ищем способ загрузки рекламы со стороны клиента , чтобы страница могла отображаться целиком, а затем реклама начала загружаться, что значительно улучшает восприятие пользователя.Я пробовал много вещей, чтобы заставить это работать, но никакое решение фактически не показывает рекламу.Вы можете увидеть сайт по адресу http://magic.tcgplayer.com/.. В верхней части страницы есть одно объявление в виде баннера, а другое - в правой «колонке».Оба объявления загружаются с использованием тегов .Я попытался загрузить, используя ленивую загрузку javascripts, но они не работали.Я пытался использовать writeCapture.js (кстати, отличный скрипт), но реклама не загружается.Я посмотрел на решения bezen.org и labjs.com, но не уверен, как применить идеи из этих ресурсов.Также обратите внимание, что рекламный скрипт находится на удаленном сервере и не может быть скопирован на наш сервер.

Любая помощь очень ценится.

Ответы [ 3 ]

2 голосов
/ 11 октября 2011

Я пытаюсь найти способ асинхронной загрузки объявлений Google, и я нахожу его.

Большой сайт douban Используйте iframe для хранения js и асинхронной загрузки iframe.

Это код js:

function google_ad() {
    function createIframe() {
        var ad_frame = document.createElement("iframe");
        ad_frame.src = "/js/google_ad.htm";
        ad_frame.id = "google_ad_frame";
        ad_frame.scrolling = "no";
        ad_frame.width = "260px";
        ad_frame.height = "260px";
        document.getElementById("google_ad").appendChild(ad_frame);
    };

    if (window.addEventListener) {
        window.addEventListener("load", createIframe, false);
    } else if (window.attachEvent) {
        window.attachEvent("onload", createIframe);
    } else {
        window.onload = createIframe;
    }
}

А это код для iframe, который взят из Google AdSense:

<script type='text/javascript' src='http://partner.googleadservices.com/gampad/google_service.js'>
</script>
<script type='text/javascript'>
    GS_googleAddAdSenseService("ca-pub-1281485759256908");
    GS_googleEnableAllServices();
</script>
<script type='text/javascript'>
    GA_googleAddSlot("ca-pub-1281485759256908", "ad_right");
</script>
<script type='text/javascript'>
    GA_googleFetchAds();
</script>

<script type="text/javascript">
    GA_googleFillSlot("ad_right");
</script>

Итак, я просто использую это:

<div id="google_ad" style="margin-top:20px;text-align:center;border:solid 17px #FFFFFF;">
    <script type="text/javascript">google_ad();</script>
</div>

И загружает кадр.

2 голосов
/ 14 декабря 2010

Поместите объявление в iframe.Iframe должен загружать JavaScript с document.write ().

0 голосов
/ 24 октября 2013

Поскольку ситуация изменилась, теперь можно использовать атрибут defer или async.

Я загружаю свои скрипты с помощью async, но defer безопаснее для старых браузеров.

См. W3 Schools , в котором содержатся сведения как об асинхронном, так и об отсрочке.

...