8
votes

Le redirection de la fenêtre JavaScript ne fonctionne pas en chrome ((annulé) - Statut)

J'essaie de faire une redirection à l'aide du code ci-dessous:

location.href = url
location.replace(url)
document.location = url
location.assign(url)
window.open(url, '_self')


13 commentaires

Cela devrait certainement fonctionner. Vous devez avoir autre chose à causer le problème. Essayez de les reproduire sur Jsfiddle.net et nous donner une version de système d'exploitation et de navigateur que vous avez.


Ouais, ça devrait, mais ça ne le fait pas. OS: Windows 7 Navigateur: Google Chrome Dernière version: 16.0.912.63m


Quelque chose d'autre doit avoir tort avec votre code. Pouvez-vous reproduire le problème sur jsfiddle.net ou seul dans un nouveau fichier HTML?


Bizarre. J'ai donc copié le code redirect dans une page HTML locale et rediriger a fonctionné comme il le devrait. Ce que je ne comprends pas, pourquoi la redirection est-elle juste annulée, lorsqu'elle s'exécute à partir du serveur Apache distant.


Je suis désolé mais je ne sais pas non plus. Au moins, vous avez une meilleure idée de l'endroit où le problème provient de (Apache).


Google.com " / / -> exactement cela, c'est la réponse envoyée à partir du fichier PHP sur le serveur. Même code dans un fichier local, fonctionne. Mais lorsque serveur par le serveur, la demande de Google.com est annulée dans le navigateur.


Essayez d'ajouter "http: //" devant l'URL et pour supprimer les commentaires HTML du script.


Ouais, l'a fait. N'a pas aidé. Ici, les détails de la demande de redirection que c'est annulé par Chrome: Pastebin.com/hd36m1rg


Je suis désolé, je suis frais d'idées. Ajoutez ces détails à votre question, peut-être que quelqu'un d'autre saura.


Google peut refuser une page avec une URL de référent qui est une adresse IP non routable (10.x.x.x). Essayez d'accéder à votre page Web par le nom du serveur (par exemple, localhost / redirect.php si c'est ce qu'il est) et voir Si cela le corrige.


Cela peut sembler fou mais supprimer les commentaires - le et voir si cela fonctionne?


Nope, ne fonctionne pas avec localhost non plus. Je peux y ajouter une URL de redirection, toujours annulée et j'ai déjà supprimé les commentaires. Cela n'a pas fonctionné non plus. Merci beaucoup. Toujours creuser.


@Chris j'ai le même problème avec la même version chromée. Cela pourrait être un bug chrome. Fonctionne dans le reste des navigateurs, c'est-à-dire Firefox, safari.


7 Réponses :


3
votes

Essayez sans fenêtre. , cela a aidé dans mon cas. J'avais utilisé emplacement.Assign () au lieu de window.location.assign () et travaillé.


1 commentaires

Vérifié cela pour travailler, toute idée si vous utilisez la fenêtre.Location et l'emplacement ne parsent rien? J'utilise les deux, semble bien fonctionner bien.



3
votes

Je faisais la même chose. Un patch rapide consistait à ajouter un peu de retard avant la redirection en utilisant Settimeout .


1 commentaires

J'ai aussi travaillé autour de ce comportement, mais cela ressemble à un piratage qui se cassera à un moment donné.



2
votes

J'ai eu un problème un peu similaire (mais cela n'a pas fonctionné sur Firefox non plus). Le problème était juste que j'ai oublié d'ajouter http: // dans: xxx


0 commentaires

3
votes

J'avais un problème similaire, le problème a été un bouton soumettant un formulaire lors de l'exécution de la fenêtre window.location.href = ... code.

J'ai dû mettre type = "bouton" dans les attributs du bouton pour empêcher sa soumission.


0 commentaires

0
votes

Utiliser Settimeout travaillé pour moi, et je suis confronté à ce problème avec Vue-Router, Tring pour rediriger vers une page d'authentification dans "Av'enregistrer" Crochet.


0 commentaires

0
votes

J'ai rencontré un problème sur Vue ici. Utilisez VUE.NEXTTTIK (fonction () ()) résolue.

Vue.nextTick(function () {
   window.location.href="/***/****_view.action
})


0 commentaires

0
votes

Il semble que Chrome veuille d'abord compléter certains (ou tous) des appels AJAX exceptionnels avant de rediriger ou de recharger la page, il est donc utile d'examiner votre trafic.

Pour moi, c'est arrivé car plusieurs demandes AJAX ont été envoyées en même temps à partir d'une fonction seinterval exécutant à un taux élevé. Je devais ClearInterval afin d'obtenir la demande window.location.href de ne pas être annulée.

Cela expliquerait pourquoi Settimeout a travaillé pour certaines personnes ci-dessus.


0 commentaires