2010-09-24 4 views
0

Pour une raison quelconque, l'utilisation de window.location.href ne modifie pas l'URL dans la barre d'adresse de l'utilisateur. Y a-t-il une raison pour laquelle je reçois ce comportement?window.location.href mais où la barre d'adresse change

CODE

Plus tôt, j'ai posté à code ici. Mais je vois que je suis dans un cadre. Window.top.location.href = 'page.htm'; fera l'affaire.

PS. Toutes mes excuses pour ne pas mentionner l'aspect du cadre. C'était une utilisation minuscule et subtile des cadres. Si j'avais su, je n'aurais pas posé la question :)

Merci à tous!

+3

Pouvez-vous fournir un échantillon de code? Parce que 'window.location.href' fait normalement ce que je pense que vous voulez faire ... Donc soit je ne comprends pas ce que vous voulez ou quelque chose d'autre est faux. –

+0

dans un rappel, j'ai ajouté 'window.location.href =" home.html ";' Donc l'appel de la page et la redirection sont faites, mais l'URL reste la même (IE et FF testé) – Kyle

+0

@Emile: Avez-vous confirmé que le rappel est appelé? Vous devriez fournir du code. –

Répondre

1

window.top.location.href = 'home.html' a changé la barre d'adresse pour moi, parce que, sans le savoir, je suis pris dans un cadre.

Merci Stack Overflow pour au moins confirmer que le comportement que je recevais était inhabituel.

0

Vous ne pouvez pas modifier la barre d'adresse par programme (pensez aux possibilités de phishing).

Le mieux que vous puissiez faire est de changer l'URL avec window.location, c'est-à-dire d'y naviguer.

Le processus de la barre d'adresse de changer cette façon est loin :) Abstraite

+0

Je pourrais voir votre point au sujet des possibilités de phishing, mais cela n'expliquerait pas pourquoi il n'y a pas un mécanisme pour mettre à jour la barre d'adresse avec une URL de la page que l'utilisateur visite réellement. Cependant, vous avez probablement raison, porteur de mauvaises nouvelles :) Si quelqu'un n'a pas de solution, je vais accepter cela. – Kyle

+1

@Emile: Si vous n'êtes pas plus précis, personne ne pourra vous aider. Il existe un mécanisme - il change la propriété 'href' de' window.location'. –

+0

@Daniel, j'ai été très sensible à vos questions de clarification. – Kyle

1

Vous pouvez le faire avec un jeu de cadres et la barre d'adresse ne changera pas, peu importe où les utilisateurs naviguer.

Mais comme déjà mentionné, même Internet Explorer - comme IE7 - se concentre sur l'utilisateur pour empêcher ce genre de choses, l'utilisateur a le droit de savoir où il navigue - c'est un problème de sécurité. Imaginez que vous arriviez à un site Web qui semble propre et convivial et que le Site vous redirige vers un certain nombre de sites d'hameçonnage sans que vous ou votre sécurité du navigateur ne s'en aperçoivent. Le propriétaire du site pourrait obtenir toutes vos informations privées, par exemple. le contenu de votre presse-papiers ou les données de géolocalisation et pendant que vous êtes à l'aise, le propriétaire du site vide votre compte bancaire. Juste un exemple.

En plus de votre réponse ci-dessous j'ai essayé window.location.href sur Firefox 3.6 et cela fonctionne comme prévu.

<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>urlRefresh</title> 


</head> 
<body> 

<input type="button" value="changeAdress" id="changeAdress" /> 

<script> 

document.getElementById('getValues').onclick = function() { 
    window.location.href = "http://www.bing.com"; 
} 
</script> 

</body> 
</html> 


Si vous cliquez sur le bouton changeAdress JavaScript émet une requête GET via votre navigateur vers le site de votre choix.

Voir http://plixi.com/p/46770650

+0

"l'utilisateur a le droit de savoir où il surfe" Vrai. Il semblerait donc que l'URL devrait être actualisée pour refléter les changements de window.location. – Kyle

+0

Il devrait absolument. J'ai édité ma réponse pour vous montrer comment. – nottinhill

+0

Merci pour la démonstration! Vous avez raison, je devrais obtenir une adresse différente dans la barre d'adresse. – Kyle

Questions connexes