171 votes

La différence entre la fenêtre.emplacement.href, fenêtre.emplacement.remplacer et de la fenêtre.emplacement.attribuer

Quelle est la différence entre

  1. window.location.href="http://example.com";
  2. window.location.replace("http://example.com");
  3. window.location.assign("http://example.com");

J'ai lu dans de nombreux forums window.location.assign() remplace simplement la session en cours de l'histoire et, partant, bouton de retour du navigateur ne sont pas en fonction. Cependant, je ne suis pas en mesure de reproduire ce.

function fnSetVariable() {
    //window.location.href = "http://example.com";
    window.location.replace("http://example.com");
    //window.location.assign("http://example.com");
}

<a onmouseover="fnSetVariable();" 
   href="PageCachingByParam.aspx?id=12" >
   CLICK 
</a>

215voto

Guffa Points 308133

Ces faire la même chose:

window.location.assign(url);
window.location = url;
window.location.href = url;

Ils ont simplement naviguer vers la nouvelle URL. L' replace méthode sur l'autre main accède à l'URL sans l'ajout d'un nouveau record pour l'histoire.

Donc, ce que vous avez lu dans les nombreuses formes n'est pas correct. L' assign méthode ne permet d'ajouter un nouveau record pour l'histoire.

Référence: http://developer.mozilla.org/en/window.location

17voto

Chuck Kollars Points 884

La partie de ne pas pouvoir utiliser le bouton de Retour est une commune de la mauvaise interprétation. de la fenêtre.emplacement.replace(URL) jette du haut d'UNE entrée de l'historique de la page de la liste, en les écrasant avec la nouvelle entrée, de sorte que l'utilisateur ne peut pas facilement Revenir à UNE page en particulier. La fonction n'a PAS d'effacer la totalité de l'historique de la page de liste, ni le bouton de Retour, entièrement non-fonctionnelle.

(PAS de fonction ni de combinaison de paramètres que je ne connais peut modifier ou remplacer l'histoire des entrées de la liste que vous n'avez pas posséder absolument pour certains navigateurs généralement impelement cette sécurité limitation simplement pas la même définition de toute opération qui pourrait affecter une entrée autre que le haut de l'un dans l'historique de la page de liste. Je frémis à l'idée de quelles sortes de choses ignobles des programmes malveillants pourraient faire si une telle fonction existe.)

Si vous voulez vraiment faire de l'Arrière du bouton de non-fonctionnelles (probablement pas "user friendly": détrompez-si c'est vraiment ce que vous voulez faire), "ouvrir" une nouvelle marque de la fenêtre. (Vous pouvez "ouvrir" une fenêtre qui n'a même pas d' avoir un bouton "Retour" de trop ...mais les popups ne sont pas très populaires ces jours-ci:-) Si vous voulez garder votre page montrant peu importe ce que fait l'utilisateur (à nouveau la "convivialité" est discutable), mise en place d'une fenêtre.onunload gestionnaire qui vient de la recharge de votre page de tous les plus de nouveau clair dès le début à chaque fois.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X