이 방법은 특히 많은 수의 이미지를 미리 로드하는 데 적합합니다. 내 갤러리 웹사이트는 이 기술을 사용하여 50개 이상의 이미지를 미리 로드합니다. 이 스크립트를 로그인 페이지에 적용하면 사용자가 로그인 ID를 입력하자마자 대부분의 갤러리 이미지가 미리 로드됩니다.
이 방법은 위의 방법과 유사하며 원하는 만큼의 이미지를 미리 로드할 수도 있습니다. 웹 페이지에 다음 스크립트를 추가하고 프로그램 지침에 따라 편집하십시오.
div>
보시다시피 이미지를 로드할 때마다 "img1 = new Image();"와 같은 변수를 만들고 이미지 소스 주소를 선언해야 합니다. "img3.src = "../path /to/image-003.gif";"로. 이 패턴을 사용하면 필요한 만큼 이미지를 로드할 수 있습니다.
이 방법을 다시 개선했습니다. 이 스크립트를 함수로 래핑하고 addLoadEvent()를 사용하여 페이지가 로드될 때까지 사전 로드 시간을 지연시킵니다.
function preloader() {
if (document.images) {
var img1 = new Image();
var img2 = new Image()
var img3 = new Image()
img1.src = "http:/ /domain.tld/path/to/image-001.gif";
img2.src = "http://domain.tld/path/to/image-002.gif";
img3.src = "http: //domain.tld/path/to/image-003.gif";
}
}
function addLoadEvent(func) {
var oldonload = window.onload; if (typeof window.onload != 'function') {
window.onload = func
} else {
window.onload = function() {
if (oldonload) {
oldonload() ;
}
func();
}
}
addLoadEvent(preloader)
방법 3: Ajax를 사용하여 Preloading 구현
위에 제시한 방법은 별로 멋지지 않은 것 같으니 이제 Ajax를 사용하여 이미지 Preloading을 구현하는 방법을 살펴보겠습니다. 이 방법은 DOM을 사용하여 이미지를 미리 로드할 뿐만 아니라 CSS, JavaScript 및 기타 관련 항목도 미리 로드합니다. JavaScript를 직접 사용하는 것보다 Ajax를 사용하는 것의 장점은 JavaScript 및 CSS를 로드해도 현재 페이지에 영향을 미치지 않는다는 것입니다. 방법은 간단하고 효율적입니다.
코드 복사
코드는 다음과 같습니다. window.onload = function() { setTimeout(function() {
// JS 및 CSS를 요청하는 XHR
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://domain. tld/preload .js');
xhr.send('');
xhr = new XMLHttpRequest()
xhr.open('GET', 'http://domain.tld/preload .css' );
xhr.send('');
// 이미지 미리 로드
새 Image().src = "http://domain.tld/preload.png"; }, 1000 );
};
위 코드는 "preload.js", "preload.css" 및 "preload.png"를 미리 로드합니다. 1000밀리초 시간 제한은 스크립트가 중단되어 일반 페이지에 기능적 문제가 발생하는 것을 방지하기 위한 것입니다.
다음으로 JavaScript를 사용하여 로딩 프로세스를 구현하는 방법을 살펴보겠습니다.
코드 복사
var head = document.getElementsByTagName('head' )[0] ;
// 새로운 CSS
var css = document.createElement('link')
css.type = "text/css"
css.rel = "stylesheet ";
css.href = "http://domain.tld/preload.css";
// 새로운 JS
var js = document.createElement("script");
js .type = " text/javascript";
js.src = "http://domain.tld/preload.js"
// JS 및 CSS 사전 로드
head.appendChild(css); 🎜>head.appendChild(js);// 이미지 미리 로드
new Image().src = "http://domain.tld/preload.png"
},
};
여기에서는 DOM을 통해 세 개의 요소를 생성하여 세 개의 파일을 미리 로드합니다. 위에서 언급했듯이 Ajax에서는 파일 로딩이 로딩 페이지에 적용되지 않습니다. 이러한 관점에서 Ajax 메소드는 JavaScript보다 우수합니다.