IE7에서 두 번 발사하지 않으면 이미지
-
10-07-2019 - |
문제
IE6 및 Firefox에서 작동합니다. 그러나 어떤 이유로 IE7이 아닙니다.
page_init에서 asp.net을 사용하여 책의 이미지 링크 인 장과 pageids를 보유하는 JavaScript 배열 목록을 채 웁니다.
전.
1 장 -> href = "JavaScript : Seepage (4);"
다음은 내가 사용하는 실제 코드입니다.
var availablePages = ['1002_001','1002_002','1002_003','1002_004','1002_005'];
function seePage(index) {
$get('imgSingle').src = 'graphics/loading.gif';
var img = new Image();
img.src = 'get.jpg.aspx?size=single&id=' + availablePages[index];
img.onload = function() {
var single = $get('imgSingle');
single.src = img.src;
}
}
1 장을 클릭하면 이미지가 전반적으로 이미지가 잘로드되고 (IE6,7, FF) 두 번째 장 링크를 클릭하는 것도 작동합니다. 그러나 IE7에서 동일한 장을 두 번 클릭합니다 (CHAP1, Chap2, Chap1 다시) 이미지가 '로딩'이미지에 갇히게됩니다. .
해결책
IE가 이미지를 캐시하고 이미로드 된 후에는 Onload 이벤트가 발생하지 않기 때문입니다.
SRC 전에 온로드 이벤트를 배치해야합니다.
var availablePages = ['1002_001','1002_002','1002_003','1002_004','1002_005'];
function seePage(index) {
$get('imgSingle').src = 'graphics/loading.gif';
var img = new Image();
img.onload = function() {
var single = $get('imgSingle');
single.src = img.src;
}
img.src = 'get.jpg.aspx?size=single&id=' + availablePages[index];
}
다른 팁
이 작업을 수행하는 또 다른 방법은 이미지가 이미로드되었는지 확인하는 것입니다. image.complete
. 예를 들어:
var img = new Image();
img.src = 'foo.jpg';
if(img.complete){
img.onload = function(){ /* ... */ };
} else {
/* execute something else, or the same. */
}
나는 IE6과 7 에서이 행동을 경험했다.
제휴하지 않습니다 StackOverflow