Skip to content

Instantly share code, notes, and snippets.

@yuya
Created November 25, 2012 10:34
Show Gist options
  • Save yuya/4143031 to your computer and use it in GitHub Desktop.
Save yuya/4143031 to your computer and use it in GitHub Desktop.
prelaod っぽいやつ
(function (global, document) {
var imgList = [
"http://cdn1.iconfinder.com/data/icons/CrystalClear/128x128/mimetypes/pdf.png",
"http://cdn1.iconfinder.com/data/icons/CrystalClear/128x128/mimetypes/unknown.png",
"http://cdn1.iconfinder.com/data/icons/CrystalClear/128x128/mimetypes/document.png",
"http://cdn4.iconfinder.com/data/icons/CV_icons_by_miffo/128/references.png",
"http://cdn2.iconfinder.com/data/icons/oxygen/128x128/mimetypes/application-vnd.oasis.opendocument.text.png"
];
preload(imgList, "imgOnLoaded");
document.addEventListener("imgOnLoaded", function () {
console.log("全部読み終わったよー");
}, false);
function preload(data, callbackName) {
if (!data.length) return;
var event = document.createEvent("Event"),
callback = function () {
event.initEvent(callbackName, false, false);
document.dispatchEvent(event);
return this;
},
img = [],
count = 0;
for (var i = 0, len = data.length; i < len; i++) {
img[i] = new Image();
img[i].src = data[i];
img[i].addEventListener("load", loadHandler(img[i]), false);
img[i].addEventListener("error", loadHandler(undefined), false);
}
function loadHandler(data) {
return function () {
count++;
console.log("loaded: " + data.src);
if (data !== undefined) gc(data);
if (count === img.length) callback(callbackName);
};
}
function gc(data) {
data.removeEventListener("load", loadHandler, false);
}
}
})(this, document);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment