Bonjour,

Je ne savais pas trop si le problème est lié au javascript générique ou à jQuery, alors à tout hasard je le poste ici. Désolé si je me suis trompé de forum.

Je sais que cette question a été beaucoup posée, mais j'ai essayé les réponses trouvées sur le net et je n'ai pas eu de succès.

Je vous expose mon problème

initialement j'ai une page jsp qui possède une ancre, et lors du clic sur cet ancre se produit un appel javascript qui lance un processus ajax.
Ce processus ajax lorsqu'il est finalisé permet de renvoyer un URL qui est ouvert avec window.open

Seulement voilà, le soucis sont les bloqueurs de popup. Car les URL ouverts avec window.open sont reconnus comme des popup.

Mais un test réalisé par un "clic" sur le lien href d'une ancre "a", montre que l'URL est ouverte dans une nouvelle fenêtre sans être détecté comme étant une popup.

J'ai donc eu l'idée (mauvaise?) de mettre dans la jsp une ancre vide

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<a id="link1" name="link1" href="" target="_blank"></a>
Et en sortie de requête ajax de l'ouvrir de la façon suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
$jQuery.ajax({
    type: 'POST',
    url: '${pageContext.request.contextPath}/ajax/zejsp.jsp',
    data:params,
    cache: false,
    success: function(dataInfos) {
    		      	$jQuery('#link1').attr('href', dataInfos);
		      	$jQuery("#link1").click();
                 }
});

"window.open(dataInfos)" marche parfaitement mais est bloqué par les popup blockers
"window.location = dataInfos" marche parfaitement mais je veux ouvrir le lien dans une autre fenêtre ou onglet

en surfant sur le net j'ai trouvé des solutions comme

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
$jQuery("#link1").triggerHandler('click');
 
$jQuery("#link1").trigger('click');
 
var e = document.createEvent('MouseEvents');
e.initEvent( 'click', true, true );
$jQuery("#link1").dispatchEvent(e);
mais ça ne fonctionne pas.

Avez vous des idées? Ou des corrections à apporter sur un appel que je n'aurais pas fait correctement?

Merci à toutes et à tous par avance

Cordialement
gojira