Quelle est la méthode préférée à utiliser pour modifier l'emplacement de la page Web actuelle à l'aide de JavaScript? J'ai vu à la fois window.navigate et document.location utilisés. Y a-t-il des différences de comportement? Existe-t-il des différences dans les implémentations de navigateur?
javascript
html
navigation
dthrasher
la source
la source
window.location.href
c'est l'implémentation complète, maiswindow.location
accomplit la même chose. Voir docs.sun.com/source/816-6408-10/location.htm : "Si vous affectez une chaîne à lalocation
propriété d'un objet, JavaScript crée unlocation
objet et attribue cette chaîne à sahref
propriété."window.location
que mais cela n'indique pas nécessairement les deux: developer.mozilla.org/en/window.location .window.location.href = 'URL';
et aussiwindow.location.assign('URL');
la méthode qui est conçue pour recharger une nouvelle page. Plus d'informations peuvent être trouvées w3schools.com/jsref/obj_location.aspwindow.navigate
est une méthode propriétaire, utilisée par Internet Explorer (je suis sûr que les autres navigateurs l'imitent pour la compatibilité, Chrome ne le fait pas).document.location
ouwindow.location
sont des objets standards (voir les différentes spécifications HTML / HTML5 / DOM).document.location = someURL
(ouwindow.location = someURL
) est probablement pris en charge en raison du code hérité. La bonne façon de le faire estdocument.location.href = someURL
, ou peut-êtredocument.location.assign(someURL)
.la source
document.locatio n est une propriété de chaîne en lecture seule (obsolète mais toujours présente), remplacée par document.url .
la source
window.location
affecte également le cadre,la meilleure forme que j'ai trouvée est:
Et le pire est:
J'ai fait un test de navigateur massif, et certains rares IE avec plusieurs plugins ne sont pas définis avec la deuxième forme.
la source
window.location
affectera la cible de votre navigateur. document.location n'affectera que votre navigateur et votre frame / iframe.la source
window.navigate
n'est PAS pris en charge dans certains navigateurs, il faut donc l'éviter. Toutes les autres méthodes utilisant la propriété location sont l'approche la plus fiable et la plus cohérentela source
J'irais avec
window.location = "http://...";
. Je codifie du JavaScript multi-navigateurs depuis quelques années et je n'ai jamais rencontré de problèmes avec cette approche.window.navigate
etwindow.location.href
me semble un peu étrange.la source
Il n'y a vraiment pas de différence; il existe environ 5 méthodes différentes pour le faire. Cependant, ceux que je vois le plus souvent sont
document.location
etwindow.location
parce qu'ils sont pris en charge par tous les principaux navigateurs. (Personnellement, je n'ai jamais vuwindow.navigate
utilisé dans le code de production, alors peut-être qu'il n'a pas un très bon support?)la source
la prise en charge de
document.location
est également bonne, même si c'est une méthode obsolète. J'utilise cette méthode depuis un moment sans problème. vous pouvez vous référer ici pour plus de détails:https://developer.mozilla.org/en-US/docs/Web/API/document.location
la source
Vous pouvez déplacer votre page en utilisant
la source