Window.location.href inactif sous Opera
6 octobre 2008 par: Benoit Bonnevillewindow.location.href, est la fonction Javascript qui change la page courante du navigateur.
Or sous le navigateur Opéra une chaine de caractères vide n’a aucun effet.
Alors que, exécutée avec les autres navigateurs, la page courante est rechargée.
Utilisation de window.location.href
JavaScript permet de rendre dynamique les pages XHTML.
Et cela permet nottament de changer de page.
ici :
- window correspond a votre page dans votre navigateur (généralement un onglet)
- location correspond a l’adresse web
- href correspond à l’URL de votre page
L’appel à window.location.href = ‘/ma_page.html’ changera la page actuellement naviguée par l’url indiquée.
Cette fonctionnalité est la même que
window.location.href.replace(‘/ma_page.html’);
Le cas Opéra
En utilisant le « browser » Opéra, j’ai découvert un comportement atypique :
Si vous passez en paramètre une chaine vide, alors Opéra ne fait absolument rien.
Contrairement a tout les autres navigateurs que j’ai testé, qui eux rechargent(reload) la page.
Navigateurs testés :
- IE6
- IE7
- FF2
- FF3
- Safari 3.1
- Chrome
- Opéra 9.5
Le correctif
La solution pour pallier à ce problème est de recharger la page en utilisant la fonction Javascript crée à cet effet :
location.reload();
Ce qui donne le code suivant :
function changeUrl(url) {
if(url == "") {
window.location.href=window.location.href;
} else {
window.location.href = url;
}
}
Update du 22 Oct 2008 : correction du nom de l’attribut javascript