Load Google Ads after entire page has loaded

江枫思渺然 提交于 2019-12-03 05:02:00

Try this article.

The trick is to put your ad initializing and loading logic in window's onload event:

<script>
   window.onload = function(){
       ...
   };
</script>

This is my ultimate Vanilla JS solution:

<script async defer src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>
    (adsbygoogle = window.adsbygoogle || []).onload = function () {
        [].forEach.call(document.getElementsByClassName('adsbygoogle'), function () {
            adsbygoogle.push({})
        })
    }
</script>

No matter how many google ads you have on the page, put ONE copy of the external js within the head of your page ... it's OK at the top since it's async.

Put the ins supplied by google where the ad is to appear.

At the bottom of your page, just before the end body tag, put the script to push the ad.

Now the ad will load after your page is complete !

If you want to add a second adsense ad on the page, do not repeat the adsbygoogle.js (one copy is enough) ... put the second where it is to be displayed ... add another push at the bottom of your page so it looks like this:

(adsbygoogle = window.adsbygoogle || []).push({}); (adsbygoogle = window.adsbygoogle || []).push({});

A Vanilla solution is to leave all your ad code as is, except to remove the script tag, and then add to your javascript

function loadGoogleAds() {
    var scriptTag = document.createElement('script');
    scriptTag.setAttribute('src', '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js');
    scriptTag.setAttribute('type', 'text/javascript');
    scriptTag.setAttribute('async', 'async');
    document.body.appendChild(scriptTag);
}
window.addEventListener("load", loadGoogleAds);

Disclaimer: as with the other answers to this question it is assumed that Google does not disapprove of methods to improve page performance

Place the code for initiating the ad's at the bottom of the page just before the closing /body> tag

(This solution requires jQuery)

Remove the <script> tag from your code and add this to your javascript:

$(function() {
  $.getScript("//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js");
});

This will do an AJAX call to get the script, rather than using the async browser method. This should result in not having the loading indicator.

ref: http://api.jquery.com/jquery.getscript/

This is what I did, after noticing adsense slows down page loading/rendering:

first of all add this code to your <Body> tag:

<body onLoad="initialize_page();">

Now, put only one adsense script code, above the <HEAD> tag:

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

Remove adsense <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> from all of your adsense code(one copy at the header is enough).

Remove all (adsbygoogle = window.adsbygoogle || []).push({}); from your adsense code from your page. We will be using them over our initialize function.

To our initialize_page() function, add this code:

function initialize_page()
{
    (adsbygoogle = window.adsbygoogle || []).push({});//this is for the first adsense
    (adsbygoogle = window.adsbygoogle || []).push({});//this is for the second
    (adsbygoogle = window.adsbygoogle || []).push({});//this is for the third
}

This code is suitable for 3 adsense on your page. if you use only 2 or 1 adesnes, just remove (adsbygoogle = window.adsbygoogle || []).push({}); from the function respectively.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!