Home Me envie um e-mail! Feed
Blog do yogodoshi

Bug de redirecionamento de página com window.location no IE

Ontem percebi que um código meu de redirecionamento de página, que estava usando em um <select> não estava funcionando no Internet Explorer. (pra variar)

Funciona da seguinte maneira, o usuário entra na página .asp e depois seleciona qual informação ele gostaria de ver em um select (com id=’calendario’) e será redirecionado para a respectiva página.

O código usado anteriormente que não funcionava no IE 7 nem no IE 6:

function MudaCBS() {
pagina = document.getElementById(”calendario”).value
window.location = pagina
}

O código funcionando no Firefox e no IE 6 e 7:

function MudaCBS(){
var pagina = document.getElementById(”calendario”).value
self.location = pagina;
}

Lição aprendida: não use window.location, use sempre self.location para redirecionamento da própria página.

Alguns podem estar se perguntando: por que eu não fiz em AJAX? Em diversas outras páginas nesse mesmo site eu fiz isso em AJAX onde o conteúdo era mostrado em uma div logo abaixo mas dessa vez eu achei que seria bom se o usuário pudesse ter um link direto para o conteúdo selecionado através de uma QueryString na URL; o que me fez evitar o uso de AJAX.

feed Gostou do Blog?  Assine o RSS Feed ou receba em seu e-mail

Posts Relacionados:
Erro “object doesn’t support this property or method” ao usar getElementById no IE
Tirinha: Conhecendo o Programador
A tão falada página 161
Bug do fundo transparente em imagens .png no IE 6
Outro bug é descoberto no Orkut

Christian diz,

Agosto 27, 2008 @ 3:22 pm

Agora tá explicado! Já tinha me deparado com isso, quando fazia um redirect no onload.
Saída? Usar meta-tag mesmo… hehe

Moura diz,

Agosto 30, 2008 @ 2:39 pm

Olá meu caro Yogodoshi, parabéns! pelo blog e pelas excelentes postagens.
Agora vai ser mais um blog para visitas diárias ou quase diárias, valeu pela dica.
Já te linkei, não necessariamente pela reciprocidade, mas sim porque gostei de seu blog.
Saúde, graça, paz e sucesso!
Abraço,
Moura
http://meioambiente.blogomoura.com

Thiago diz,

Setembro 1, 2008 @ 2:29 pm

Legal não sabia que dava pra substituir window por self.
Mais acho que a forma correta de se fazer, para não dar erro em nenhum navegador, seria assim:

Script:
function MudaCBS(obj) {
pagina = obj.value;
window.location = pagina;
}

Chamando a função no Select:
onchange=”MudaCBS(this)”

Este exemplo serve também para validação de formulários.

Flw yogodoshi.
Seu blog ta show!!!

Assinar feed RSS de comentários neste post · TrackBack URI

Deixe seu comentário

Fechar
Envie por e-mail