javascript 사전 로드&지연 로드_javascript技巧
(function($) {
(function($) {
$.preload = function(data, cfg) {
return new Loader(data, cfg);
};
var map = {}, on = $.event.add, un = $.event.remove, head = document.getElementsByTagName('head')[0], body =
document.body, bs = $.browser, 즉 = bs.msie, webkit = bs.webkit, gecko = bs.mozilla, space = 1000, ajax =
$.ajax,
loaders = $.preload.loaders = {
'js': function(url, callback, timeout, defer) {
var s, 타이머
if (defer) {
if (ie) {
return loaders.img(url; , 콜백, 시간 초과);
} else {
s = document.createElement('object')
s.data = url
s.width = s.height = 0; >}
} else {
s = document.createElement('script')
s.setAttribute('type', 'text/javascript')
s.setAttribute('src' , url);
}
function f() {
if(타이머)
clearTimeout(timer)
s.onreadystatechange = s.onload = s.onerror = null; >callback(url, false);
}
if (ie) {
s.onreadystatechange = function() {
if (this.readyState === 'loaded' || this.readyState === '완료') {
if (타이머)
clearTimeout(타이머);
s.onreadystatechange = null;
콜백(url, true);
}
};
} else {
s.onload = function() {
if(타이머)
clearTimeout(타이머);
s.onload = s.onerror = null;
콜백(url, true);
};
s.onerror = f;
}
timer = setTimeout(f, timeout);
body.appendChild(들);
},
'css' : function(url, callback, timeout, defer) {
if (defer) {
return loaders.js(url, callback, timeout, defer);
}
var s = document.createElement('link'), 타이머;
s.setAttribute('rel', 'stylesheet');
s.setAttribute('type', 'text/css');
s.setAttribute('href', url);
function f() {
if(타이머)
clearTimeout(타이머);
s.onreadystatechange = s.onload = s.onerror = null;
콜백(url, false);
}
if (즉) {
s.onreadystatechange = function() {
if (this.readyState === '로드됨' || this.readyState === '완료') {
if(타이머)
clearTimeout(타이머);
s.onreadystatechange = null;
콜백(url, true);
}
};
타이머 = setTimeout(f, timeout);
} else if (webkit || gecko) {
timer = new Date();
function f() {
if (('sheet' in s) && ('cssRules' in s.sheet)) {
try {
callback(url, !!s.sheet. cssRules[0]);
} catch (e) {
setTimeout(f, space);
}
} else if (new Date() - 타이머 > 시간 초과) {
callback(url, false);
} else {
setTimeout(f, space);
}
}
setTimeout(f, space * 2);
} else {
s.onload = function() {
if(타이머)
clearTimeout(타이머);
s.onload = s.onerror = null;
콜백(url, true);
};
s.onerror = f;
타이머 = setTimeout(f, timeout);
}
head.appendChild(들);
},
'img' : function(url, callback, timeout) {
var s = new Image(), 타이머;
function f() {
if(타이머)
clearTimeout(타이머);
s.onload = s.onerror = null;
콜백(url, false);
}
s.onload = function() {
if(타이머)
clearTimeout(타이머);
s.onload = s.onerror = null;
콜백(url, true);
};
s.onerror = f;
타이머 = setTimeout(f, timeout);
s.src = URL;
},
'ajax' : 함수(url, 콜백, cfg) {
cfg = cfg || {};
cfg.url = url;
cfg.success = function(data) {
callback(url, true, data);
};
cfg.error = function() {
callback(url, false);
};
아약스(cfg);
}
};
function Loader(data, cfg) {
var self = this, cur = -1, items = [], 보류 중인 항목 = [], done, i = 0, l = data.length, j, m, s, t, c, d, tt, 항목, 수행 =
0, 로드;
cfg = cfg || {};
for (; i 항목 = 데이터[i];
if (typeof item === 'string') {
s = item.substr(item.lastIndexOf('.') 1);
items.push(maps[item] = {
type : 로더[s] ? s : 'img',
url : item
});
} else if (item.urls) {
for (j = 0, s = item.type, t = item.require, c = item.callback, d = item.defer, tt = item.timeout , 항목 =
item.urls, m = 항목.길이 j < m; j) {
s = s || item[j].substr(item[j].lastIndexOf('.') 1);
items.push(maps[item[j]] = {
type : 로더[s] ? s : 'img',
url : item[j],
require : t,
콜백 : c,
defer : d,
timeout : tt
});
}
} else {
if (!item.type) {
s = item.url.substr(item.url.lastIndexOf('.') 1);
item.type = 로더[들] ? s : 'img';
}
items.push(maps[item.url] = 항목);
}
}
this.success = this.fail = this.progress = 0;
if (cfg.onFinish)
this.onFinish = cfg.onFinish;
시간 초과 = cfg.timeout || 2000;
함수 콜백(url, 플래그, 데이터) {
if (플래그) {
self.success;
} else {
self.fail;
}
self.progress = (self.success self.fail) / items.length;
console.info(url);
console.warn(플래그);
항목 = 지도[url];
item.success = 플래그;
if (self.progress === 1) {
self.stop();
}
if (item.parent && !item.defer && !cfg.defer) {
$(item.parent)[0].innerHTML = 데이터 || '';
}
if (item.callback) {
item.callback(data);
}
item.done = true;
--하는 중;
}
function runnable(item, pend) {
var it;
if (typeof item.require === 'string') {
if (item.done)
false를 반환합니다.
if (!item.require)
true를 반환합니다.
그것 = 지도[item.require];
if (!it || it.done) {
if (보류)
pendings.shift();
if (it && it.success) {
true를 반환합니다.
} else {
콜백(item.url, false);
}
} else if (!pend) {
pendings.push(item);
}
} else {
for (it = item.length; it--;) {
if (!runnable(item[it], pend))
return false;
}
true를 반환합니다.
}
}
function run() {
var item = 보류 중[0];
if (!item || !runnable(item, true)) {
while (item = items[ cur]) {
if (runnable(item)) {
break;
}
}
}
if (항목) {
var fn = loaders[item.type || 'img'];
if (fn) {
하고;
if (item.type === 'ajax') {
if (item.cfg && !item.cfg.timeout)
item.cfg.timeout = timeout;
fn(item.url, 콜백, item.cfg);
} else {
fn(item.url, callback, item.timeout || timeout, item.defer === 정의되지 않음 ? cfg.defer
: item.defer);
}
};
if (로드) {
run();
} else {
self.timer = setTimeout(run, space);
}
} else if (pendings.length) {
self.timer = setTimeout(run, space);
}
}
this.start = function(delay) {
if (!done)
this.timer = setTimeout(run, Delay > space ? Delay : space);
};
this.stop = function() {
if (this.timer) {
clearTimeout(this.timer);
this.timer = null;
완료 = 사실;
if (this.onFinish) {
if (!doing)
this.onFinish();
else {
s = setInterval(function() {
if (!doing) {
clearInterval(s);
self.onFinish();
}
} , 공간);
}
}
}
};
this.pause = function() {
clearTimeout(this.timer);
};
this.resume = function() {
this.timer = setTimeout(run, space);
};
this.load = function() {
clearTimeout(this.timer);
로드 = true;
실행();
};
}
})(jQuery);
/**
* @example
* var loader = $.preload([
// 문자열, 기본 구성 사용
'1.jpg', '1.js',
// Object , 유형, 요구, 시간 초과, 연기, 콜백과 같은 사용자 정의 구성
{
유형 : 'img',
url : 'http://foo.com/foo',
시간 초과 : 10
}, {
url : '3.js',
callback : fn,
defer : true,
require : '1.js'
},
/ / Object, urls를 사용하여 동일한 구성의 집합을 지정할 수 있습니다
{
type : 'css',
urls : ['4.css', '5.css']
} ], {
// 로딩이 완료된 후
onFinish를 호출합니다: fn,
// 로딩 시간 제한
timeout: 50
})
// 사전 로드 시작
loader .start() ;
loader.stop();
// 사전 로드 일시 중지
loader.pause()
loader.resume(); >로더.로드( )
*/

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











WebSocket 및 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 소개: 지속적인 기술 개발로 음성 인식 기술은 인공 지능 분야의 중요한 부분이 되었습니다. WebSocket과 JavaScript를 기반으로 한 온라인 음성 인식 시스템은 낮은 대기 시간, 실시간, 크로스 플랫폼이라는 특징을 갖고 있으며 널리 사용되는 솔루션이 되었습니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법을 소개합니다.

WebSocket과 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 서론: 인터넷 기술의 급속한 발전과 함께 실시간 모니터링 시스템이 다양한 분야에서 널리 활용되고 있다. 실시간 모니터링을 구현하는 핵심 기술 중 하나는 WebSocket과 JavaScript의 조합입니다. 이 기사에서는 실시간 모니터링 시스템에서 WebSocket 및 JavaScript의 적용을 소개하고 코드 예제를 제공하며 구현 원칙을 자세히 설명합니다. 1. 웹소켓 기술

JavaScript 및 WebSocket을 사용하여 실시간 온라인 주문 시스템을 구현하는 방법 소개: 인터넷의 대중화와 기술의 발전으로 점점 더 많은 레스토랑에서 온라인 주문 서비스를 제공하기 시작했습니다. 실시간 온라인 주문 시스템을 구현하기 위해 JavaScript 및 WebSocket 기술을 사용할 수 있습니다. WebSocket은 TCP 프로토콜을 기반으로 하는 전이중 통신 프로토콜로 클라이언트와 서버 간의 실시간 양방향 통신을 실현할 수 있습니다. 실시간 온라인 주문 시스템에서는 사용자가 요리를 선택하고 주문을 하면

WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법 오늘날의 디지털 시대에는 점점 더 많은 기업과 서비스에서 온라인 예약 기능을 제공해야 합니다. 효율적인 실시간 온라인 예약 시스템을 구현하는 것이 중요합니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. WebSocket이란 무엇입니까? WebSocket은 단일 TCP 연결의 전이중 방식입니다.

JavaScript 및 WebSocket: 효율적인 실시간 일기 예보 시스템 구축 소개: 오늘날 일기 예보의 정확성은 일상 생활과 의사 결정에 매우 중요합니다. 기술이 발전함에 따라 우리는 날씨 데이터를 실시간으로 획득함으로써 보다 정확하고 신뢰할 수 있는 일기예보를 제공할 수 있습니다. 이 기사에서는 JavaScript 및 WebSocket 기술을 사용하여 효율적인 실시간 일기 예보 시스템을 구축하는 방법을 알아봅니다. 이 문서에서는 특정 코드 예제를 통해 구현 프로세스를 보여줍니다. 우리

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

사용법: JavaScript에서 insertBefore() 메서드는 DOM 트리에 새 노드를 삽입하는 데 사용됩니다. 이 방법에는 삽입할 새 노드와 참조 노드(즉, 새 노드가 삽입될 노드)라는 두 가지 매개 변수가 필요합니다.

JavaScript는 웹 개발에 널리 사용되는 프로그래밍 언어인 반면 WebSocket은 실시간 통신에 사용되는 네트워크 프로토콜입니다. 두 가지의 강력한 기능을 결합하면 효율적인 실시간 영상 처리 시스템을 만들 수 있습니다. 이 기사에서는 JavaScript와 WebSocket을 사용하여 이 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 첫째, 실시간 영상처리 시스템의 요구사항과 목표를 명확히 할 필요가 있다. 실시간 이미지 데이터를 수집할 수 있는 카메라 장치가 있다고 가정해 보겠습니다.
