Nous avons une fonction JavaScript appelée "move" qui ne fait que "windows.location.href = any anchor".
Cette fonction fonctionne sur IE, Opera et Safari, mais est en quelque sorte ignorée dans Firefox. La recherche sur Google ne donne pas une réponse satisfaisante pourquoi cela ne fonctionne pas.
Un gourou de JavaScript est-il au courant de ce comportement et quelle serait la meilleure pratique pour passer à une ancre via JavaScript?
Avez-vous essayé simplement d'utiliser
window.location = 'url';
Dans certains navigateurs, window.location.href
est une propriété en lecture seule et n’est pas le meilleur moyen de définir l’emplacement (même si, techniquement, il devrait vous le permettre). Si vous utilisez la propriété location
seule, cela devrait être redirigé pour vous dans tous les navigateurs.
La documentation de Mozilla fournit une explication assez détaillée sur l'utilisation de l'objet window.location
.
Si vous essayez d'appeler ce code javascript après un événement suivi d'un rappel, vous devez ajouter une autre ligne à votre fonction:
function JSNavSomewhere()
{
window.location.href = myUrl;
return false;
}
dans votre balisage de la page, le contrôle qui appelle cette fonction au clic doit renvoyer la valeur de cette fonction
<asp:button ........ onclick="return JSNavSomewhere();" />
La valeur de retour fausse annulera le rappel et la redirection fonctionnera maintenant. Pourquoi cela fonctionne dans IE? Eh bien, je suppose qu’ils pensaient différemment à la question quand ils ont privilégié la redirection par rapport au rappel.
J'espère que cela t'aides!
Une observation à assurer dans un tel scénario
La suite fonctionnera dans IE
, mais ni dans Chrome
ni dans Firefox
(les versions que j'ai testées)
window.location.href("http://stackoverflow.com");
Après travaillera tous les trois
window.location.href = "http://stackoverflow.com";
Peut-être que c'est juste une faute de frappe dans votre post et pas dans votre code, mais c'est window et pas windows
J'ai le même problème et je suppose que cela est lié à un événement click.
J'ai une fonction qui déplace le navigateur vers une page spécifique. J'attache cette fonction à certains événements de clic: dans un bouton et dans une image. De plus, j'exécute la fonction lorsque l'utilisateur appuie sur échap (événement document onkeypress).
Les résultats sont que dans tous les cas, la fonction est appelée et exécutée, mais seulement quand il y a un clic, le navigateur va à l'adresse que je veux.
Update Je l'ai fait fonctionner! avec un
setTimeout( "location.replace('whatever.html');", 0 );
Je ne sais pas pourquoi l'emplacement.replace ne fonctionnait pas lorsque l'événement était une pression de touche, mais avec le settimeout cela fonctionne :)
Update Le renvoi de false après l'événement lorsque vous appuyez sur échappe à la redirection Si vous renvoyez true ou rien, le navigateur ne suivra pas
Je ne suis pas sûr de vous suivre.
Je viens d’essayer: aller avec FF3 à Manuel de référence de Lua 5.1 (long et avec beaucoup d’ancres).
En collant javascript:window.location.href="#2.5"; alert(window.location.href);
dans la barre d’adresse, je suis allé à l’ancre de droite et l’affichage de la bonne URL s’est affiché. Fonctionne aussi avec une URL complète, bien sûr.
Code alternatif: javascript:(function () { window.location.href="#2.5"; })();
Peut-être que vous avez oublié le #. Problème commun, également avec les cartes d’image.
parfois, si vous utilisezformpour publier des données, cela peut arriver ... si vous utilisez ajax, essayez de remplacer "form" par "div". Cela empêchera le comportement par défaut de la forme et fera votre code ajax.
Vous devez ajouter return false; après le window.location.href comme mentionné ci-dessus.
function thisWorks()
{
window.location.href = "http://www.google.com";
return false;
}
function thisDoesNotWork()
{
window.location.href = "http://www.google.com";
}
window.location.href fonctionne correctement dans toutes les versions de Firefox, tout comme document.location.href. Je pense qu'il y a quelque chose d'autre dans votre code qui casse des choses.
déposez-le dans une page vierge. Si cela fonctionne, cela indique que quelque chose ne va pas sur votre page.
<script>
window.location.href = 'http://www.google.com/';
</script>
window.location.hash = "#gallery";
Pour référence, j'ai eu le même problème.
onclick = "javascript: window.location ('example.html');" ne fonctionnait pas sous FF (dernière)
Il me suffisait de réécrire pour onclick = "javascript: window.location = 'example.html';" pour le faire fonctionner
s'il vous plaît ajouter une balise de script javascript complète
<script type="text/javascript" language="javascript"></script>
Avez-vous essayé cela?
Response.Write("<script type='text/javaScript'> window.location = '#myAnchor'; </script>";);
Vous pouvez également utiliser window.location.replace
pour passer à une ancre sans l'enregistrer dans l'historique du navigateur:
Cet article illustre comment sauter à une ancre et utilise href comme propriété en lecture seule.
function navigateNext()
{
if (!window.location.hash)
{
window.location.replace(window.location.href + unescape("#2"))
}
else
{
newItem = nextItem(window.location.hash)
if (document.getElementById(newItem))
{
window.location.replace(stripHash(window.location) + "#" + newItem)
}
else
{
window.location.replace(stripHash(window.location) + "#1")
}
}
}
Je viens de surmonter le même problème. et le problème n'est pas en javascript, mais l'attribut href sur l'élément <a>
.
mon code js
function sebelum_hapus()
{
var setuju = confirm ("Anda akan menghapus data...")
if (setuju)
window.location = "index.php";
}
mon html précédent était
<a href="" onClick="sebelum_hapus();">Klik here</a>
et je le mets à jour
<a href="#" onClick="sebelum_hapus();">Klik here</a>
ou supprimer l'attribut href
j'espère que cela t'aides.