Created
April 22, 2010 17:11
-
-
Save mathiasbynens/375496 to your computer and use it in GitHub Desktop.
JavaScript preload() function
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*! | |
* $.preload() function for jQuery – http://mths.be/preload | |
* Preload images, CSS and JavaScript files without executing them | |
* Script by Stoyan Stefanov – http://www.phpied.com/preload-cssjavascript-without-execution/ | |
* Slightly rewritten by Mathias Bynens – http://mathiasbynens.be/ | |
* Note that since this script relies on jQuery, the preloading process will not start until jQuery has finished loading. | |
*/ | |
jQuery.preload = function(array) { | |
var length = array.length, | |
document = window.document, | |
body = document.body, | |
isIE = 'fileSize' in document, | |
object; | |
while (length--) { | |
if (isIE) { | |
new Image().src = array[length]; | |
continue; | |
} | |
object = document.createElement('object'); | |
object.data = array[length]; | |
object.width = object.height = 0; | |
body.appendChild(object); | |
} | |
}; | |
// Example: | |
$(function() { | |
$.preload([ | |
'http://hang.nodester.com/foo.png?2000', | |
'http://hang.nodester.com/foo.js?2000', | |
'http://hang.nodester.com/foo.css?2000' | |
]); | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*! | |
* JavaScript preload() function – http://mths.be/preload | |
* Preload images, CSS and JavaScript files without executing them | |
* Script by Stoyan Stefanov – http://www.phpied.com/preload-cssjavascript-without-execution/ | |
* Slightly rewritten by Mathias Bynens – http://mathiasbynens.be/ | |
*/ | |
function preload(array) { | |
var length = array.length, | |
document = window.document, | |
body = document.body, | |
isIE = 'fileSize' in document, | |
object; | |
while (length--) { | |
if (isIE) { | |
new Image().src = array[length]; | |
continue; | |
} | |
object = document.createElement('object'); | |
object.data = array[length]; | |
object.width = object.height = 0; | |
body.appendChild(object); | |
} | |
} | |
// Example: | |
preload([ | |
'http://hang.nodester.com/foo.png?2000', | |
'http://hang.nodester.com/foo.js?2000', | |
'http://hang.nodester.com/foo.css?2000' | |
]); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@mathiasbynens - as promised: http://moredots.dk/etc/preloader-bug-demo/ - issue encountered in newest version of Chrome, Firefox, Safari and Opera. Adding o.style.position = 'absolute' will fix it. /Michael