Angularjs $de la fenêtre.ouvrir des popups bloqué
Je suis en train d'utiliser le Github de l'API de web auth flux à partir d'une application AngularJS. Quand mon formulaire d'inscription à la présente, je veux ouvrir une nouvelle fenêtre pour les envoyer à l'auth page. Normalement, je voudrais juste utiliser window.open
à l'intérieur d'un événement utilisateur de s'assurer qu'il ne voulait pas se faire prendre par un bloqueur de pop-up.
Dans mon angulaire de l'app, je termine un peu de l'api Github et Angulaire de service, et le code pour ouvrir la fenêtre va là-bas. De ce fait, il est bloqué. J'ai aussi essayé de le mettre dans une fonction, dans le contrôleur, qui est appelée par un formulaire via ng-submit
.
Donc la question est, est-il un moyen élégant pour ouvrir une nouvelle page sur la soumission d'un formulaire à partir de quelque part à l'intérieur de mon service ou le contrôleur, ou ai-je besoin de trouver un autre moyen de le faire?
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas vous débarrasser de l'bloqueur de pop-up par script automatisé de la fenêtre.ouvert. Seul l'utilisateur réel de l'appel à l'action des événements va ouvrir une nouvelle fenêtre sans être bloqué par le bloqueur de pop-up. Imaginez une situation dans un site où il n'y a pas de bloqueur de pop-up dans le navigateur et javascript ouvre 100 popups dans une boucle. Ne serait-il pas ? Il sert à être là, dans notre bon vieux temps, comme un virus, mais les navigateurs modernes sont beaucoup smart et cette gêne est géré correctement.
Chrome bloque par défaut les messages qui ne sont pas le résultat de l'action directe. Dans votre cas, je suppose, l'appel à la fenêtre.l'ouverture est faite à l'intérieur d'une fonction de rappel. De ce fait, il asynchrone et Chrome bloque.
Cependant, il y a une solution pour faire ce travail. Instancier votre fenêtre à l'extérieur de la fonction de rappel et vous pouvez faire référence à la variable à modifier l'url cible de la fenêtre en fonction de rappel.
Vous pourriez tout simplement créer une directive pour ce faire, à partir de l'intérieur d'un
click
événement contenu: