Home  >  Article  >  Web Front-end  >  Preload js code of css or javascript_javascript tips

Preload js code of css or javascript_javascript tips

WBOY
WBOYOriginal
2016-05-16 18:28:501028browse

There are generally two common ways to preload files: xhr and dynamically inserting nodes. Dynamically inserting nodes is the simplest and most widespread asynchronous loading method (such as yui's Get module). Then files loaded using the dynamically inserted node method will be executed immediately after loading. On the one hand, the execution of javascript will occupy the browser's js execution. The process, on the other hand, may also change the page structure, and the execution of css is more likely to change the entire page. Although the xhr method will not execute scripts, due to the restrictions of the same domain, and the static files of the website are now deployed on the CDN server, how to preload css js files has become a bit mysterious.

Stoyan Stefanov concisely explains a way to load a file without letting it execute. The original text can be found at http://www.phpied.com/preload-cssjavascript-without-execution/

The specific method is to use new Image().src in IE to preload the file , while other browsers use dynamically inserted tags to complete loading.
Part of the code is as follows

Copy code The code is as follows:

window.onload = function () {

var i = 0,
max = 0,
o = null,

// list of stuff to preload
preload = [
'http://tools.w3clubs.com/pagr2/.sleep.expires.png',
'http://tools.w3clubs.com/pagr2/ .sleep.expires.js',
'http://tools.w3clubs.com/pagr2/.sleep.expires .css'
],
isIE = navigator.appName.indexOf('Microsoft') === 0;

for (i = 0, max = preload.length; i < max ; i = 1) {

if (isIE) {
new Image().src = preload[i];
continue;
}
o = document.createElement( 'object');
o.data = preload[i];

// IE stuff, otherwise 0x0 is OK
//o.width = 1;
//o. height = 1;
//o.style.visibility = "hidden";
//o.type = "text/plain"; // IE
o.width = 0;
o .height = 0;

// only FF appends to the head
// all others require body
document.body.appendChild(o);
}
};

Demo is availablehttp://phpied.com/files/object-prefetch/page1.php?id=1

A few notes:
1. The reason why new Image().src cannot be used in ff is because ff implements a separate cache for images. At the same time, safari and chrome don't seem to be cached.

2. The dynamically inserted object tag needs to be inserted into the non-head part to trigger loading.

3. ie7 ie8 can also use dynamic objects to load files through some code (mentioned in the code comments). However, the author found that object usually consumes a lot of money, so...


Through his own experiments, he found that it is quite good. Students in need may wish to give it a try.
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn