JS 이미지 미리 로딩 간단한 예시
함수 loadImage( url, callback) {
if(url!='null') {
var img = new Image();
img.src = url;
if(img.complete) {
콜백(img);
else { ;
> }
}
loadImage(pic_url,loadImage);
또 다른 자세한 내용 예
JS를 통해 DOM을 조작하는 것은 현재 페이지의 html 요소를 비동기적으로 로드하는 데 사용되는 경우가 많습니다. Image 객체에 대한 이해에 대해 이야기하겠습니다.
예제 보기:
코드 복사
코드는 다음과 같습니다. < ;input type= "button" name="" value="이미지 로드" onclick="addImg('tt.jpg')" /> function addImg(isrc)
{
var Img = new Image();
Img.src = isrc;
Img.onload = function()
{
document.body.appendChild(Img);
}
}
//-->
페이지가 위의 코드가 포함되어 있습니다. "tt.jpg"는 열 때 로드되지 않지만 버튼을 클릭하면 로드됩니다. 로딩이 완료되면 onload 이벤트가 트리거되어 페이지에 표시됩니다.
"tt.jpg" 이미지를 처음 로딩하시면 정상적으로 실행됩니다. 버튼을 클릭하면 이미지가 로드되어 표시됩니다. 반복해서 클릭하면 어떻게 되나요?
IE와 Opera에서는 처음 이미지를 로딩할 때를 제외하고는 정상적으로 표시되다가 다시 클릭하면 반응이 없고, 새로고침도 마찬가지입니다. "onload" 이벤트를 한 번만 실행합니까? 캐싱 메커니즘인가요?
FF와 Chrom에서는 클릭할 때마다 하나의 이미지가 로드됩니다.
약간 수정:
코드 복사
function addImg(isrc)
{
var Img = new Image();
Img.onload = function()
{
document.body.appendChild( Img) ;
}
Img.src = isrc;
}
//-->
실행해 보니 뭔가 이상한 일이 벌어지고 있는 걸 발견했습니다. 모든 브라우저는 일관성이 있으며 클릭당 하나의 이미지를 로드합니다. 그 이유는 무엇입니까?
IE와 Opera 실행 중에 onload 이벤트가 한 번만 발생하지 않는 것을 볼 수 있습니다!
이미지 개체의 일부 속성인 Complete, ReadyState(IE 독점 값 [초기화되지 않음, 완료])를 생각해 보세요. (캐싱이 효과에 영향을 주지 않도록 이미지 이름을 변경하세요!)
코드 복사