Window.location.href inactif sous Opera

6 octobre 2008 par: Benoit Bonneville

window.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

Filed under: Développement

Répondre