Pergunta

Ele funciona no IE6, e FireFox; mas por alguma razão não no IE7.

Usando ASP.NET na Page_Init eu preencher uma lista de capítulos que são links para a imagem no livro, bem como uma matriz de javascript que detém os pageIDs.

ex.

Capítulo 1 -> href = "javascript: infiltração (4);"

aqui é o código real que estou usando:


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;
    }
}

Quando clico no Capítulo 1, a imagem é carregada bem através da placa (IE6,7, FF) e clicando em um segundo link capítulo também funciona; no entanto, em (e apenas em) IE7 não clicar no mesmo capítulo duas vezes (chap1, chap2, então chap1 novamente) que a imagem ficar preso na imagem 'carregar' ... Eu estou puxando meu cabelo aqui caras .. .

Foi útil?

Solução

Ela é causada porque o IE irá armazenar em cache a imagem, eo evento onload nunca fogo depois que ele já foi carregado.

Você precisa posicionar o evento onload antes do 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];
}

Outras dicas

Outra maneira de fazer isso é verificar se a imagem já é carregado com image.complete. Por exemplo:

var img = new Image();
img.src = 'foo.jpg';
if(img.complete){
    img.onload = function(){ /* ... */ };
} else {
    /* execute something else, or the same. */
}

Eu experimentei esse comportamento no IE6 e 7.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top