Maison  >  Article  >  interface Web  >  Solution à l'interception de window.open() dans une nouvelle fenêtre après la réussite de la requête ajax

Solution à l'interception de window.open() dans une nouvelle fenêtre après la réussite de la requête ajax

高洛峰
高洛峰original
2017-01-09 14:25:251318parcourir

Problème :

J'ai rencontré un problème lors du développement d'un projet plus tôt. Une fois la requête ajax asynchrone réussie, une nouvelle fenêtre doit être ouverte pour ouvrir l'URL. , mais malheureusement il est intercepté par le navigateur. Bon, comment résoudre ce problème ?
Analyse :

La raison pour laquelle le navigateur intercepte la fenêtre nouvellement ouverte est que l'opération n'est pas activement déclenchée par l'utilisateur, il pense donc qu'elle n'est pas sûre et l'intercepte (mais si c'est _self, il il n'y aura pas cette limitation), même si le comportement de l'utilisateur tel que cliquer ou soumettre est simulé dans la fonction de rappel ajax (trigger('click')), le navigateur pensera qu'il n'est pas activement déclenché par l'utilisateur, donc il ne peut pas être exécuté en toute sécurité, il est donc intercepté.
Solution :

1. Changez asynchrone en synchrone, c'est-à-dire : async:false

2. Pointez la fenêtre nouvellement ouverte vers un objet, puis modifiez l'URL de l'objet, tels que :

$('.task').bind('click',function(){
var w = window.open();
$.ajax({
type: 'POST',
url: '/surveyTask',
dataType: 'json',
error: function(){
w.close();
},
success: function(res){
w.location = res.url;
}
});
});

La dernière chose à noter est : la méthode en ligne d'ajout dynamique d'un formulaire pour ouvrir une nouvelle fenêtre n'est pas adaptée aux requêtes ajax , au moins après que le blogueur l'ait testé, il fonctionne toujours bloqué par le navigateur.

Pour plus d'articles sur les solutions à l'interception de window.open() dans une nouvelle fenêtre ouverte après la réussite de la requête ajax, veuillez faire attention au site Web PHP chinois !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn