You might be wondering, when Google's PageSpeed tells your website has "Render-Blocking Script". After a quick search on Google, finding similar topics on How to remove Render-Blocking Javascript, as stated by PageSpeed Insights. You would find that adding an "async" attribute to the "script" tag would do the job. But unfortunately, after all excitements, the "Don't be Evil" says the same thing again and again.
So, does adding an "async" attribute to the "script" tag really loads a javascript in an asynchronous way?
Well, as per w3cschools, "The async attribute is a boolean attribute. When present, it specifies that the script will be executed asynchronously as soon as it is available.".
Is that correct? Did you check it by yourself? - Well, for me it didn't work out, as I expected.
Here below, I've found two wonderful code snippets that would really make a javascript run asynchronous.
So, does adding an "async" attribute to the "script" tag really loads a javascript in an asynchronous way?
Well, as per w3cschools, "The async attribute is a boolean attribute. When present, it specifies that the script will be executed asynchronously as soon as it is available.".
Is that correct? Did you check it by yourself? - Well, for me it didn't work out, as I expected.
Here below, I've found two wonderful code snippets that would really make a javascript run asynchronous.
The traditional Javascript way
function loadScript(src, callback)
{
var s,
r,
t;
r = false;
s = document.createElement('script');
s.type = 'text/javascript';
s.src = src;
s.onload = s.onreadystatechange = function() {
if ( !r && (!this.readyState || this.readyState == 'complete') )
{
r = true;
callback();//This function will be fired, after the javascript loaded from the remote URL.
}
};
t = document.getElementsByTagName('script')[0];
t.parentNode.insertBefore(s, t);
}
The above function will create a "script" tag dynamically and then inserts it before the first "script" tag found in the DOM(Document Object Model).
The Jquery way
$.getScript(url, successCallback);//As simple as eating an Apple pie. ;)The above code does the same job as the first one. But, the only downfall is, you need to load the Jquery library before doing this.
Thank me for getting your PageSpeed score to the peak. :)
And, let me know your queries through the comments section.
0 comments:
Post a Comment
Don't be shy. Just leave your comments, am so happy to assist you. And, don't forgot that I am such a nice person who you are dealing with :)