Je sais qu'il existe de nombreux threads sur la façon de vaincre les bloqueurs de fenêtres contextuelles. Dans ce cas, je n'essaie pas vraiment de faire ça. Par défaut, les navigateurs ne bloquent pas tous les pop-ups. Les légitimes tels que lorsque les utilisateurs cliquent dessus sont autorisés. Ceci est un bon test: http://www.popuptest.com/goodpopups.html (fonctionne dans IE, Firefox, Chrome, Opera)Lancement d'une fenêtre contextuelle légitime sur l'utilisateur, cliquez sur
Comment le site de test ci-dessus autorise les fenêtres pop-up légitimes est de coupler directement l'événement onclick au lancement d'une nouvelle fenêtre.
Dans mon cas, je ne peux pas simplement lancer la fenêtre pop-up. Je dois vérifier si l'entrée de l'utilisateur, un code alphanumérique, est valide. Comment j'ai fait est l'entrée est vérifiée via ajax et si elle est valide, window.open()
sera appelée pour lancer la fenêtre. Hélas, tous les bloqueurs de pop-up bloquent cela.
Existe-t-il un autre moyen de le faire? Je ne veux pas lancer une fenêtre si l'entrée est invalide. Si l'entrée n'est pas valide, le message d'erreur s'affiche sur la page immédiate et non sur la nouvelle fenêtre contextuelle. C'est idiot de lancer une fenêtre juste pour dire à l'utilisateur que c'est invalide.
Avez-vous des idées ou des suggestions sur la façon de vérifier l'entrée et d'afficher une fenêtre contextuelle légitime?
Merci.
Edité pour inclure mon code
formulaire HTML (simplifié):
<form id="form-passcode">
<input id="input-passcode" type="text" name="input-passcode" /><a class="submit" onclick="javascript:passcode_check(); return false;" href="javascript:">Go</a>
</form>
Javascript (en utilisant jQuery):
function passcode_check() {
var refPasscode = $('#input-passcode');
var data = $('#form-passcode').serialize();
$.ajax({
url: check_passcode.php',
data: data,
dataType: 'json',
type: 'post',
success: function (j) {
if (j.status == 1) {
newwindow = window.open('http://google.com','Google','menubar=no,height=500,width=300,resizable=no,toolbar=no,location=no,status=no');
if (window.focus) {newwindow.focus()}
}
else {
// show error to end-user
}
}
});
}
}
J'ai aussi expérimenté avec une alternative moins idéale, dans laquelle lors de la vérification via ajax si l'entrée est valide, je vais insérer un lien par exemple. <a href="http://google.com" onclick="newwin(this.href);return false" onfocus="this.blur()">Launch</a>
via $('#form-passcode').html();
dans lequel l'utilisateur va ensuite cliquer sur pour lancer la pop-up. Cela fonctionne dans tous les navigateurs, bien que j'aimerais encore pour le rendre plus transparente pour l'utilisateur ..
Merci encore, :)
Merci. J'ai juste essayé votre méthode, en déplaçant tout à la fonction onclick, en désactivant tous les gestionnaires de jquery pour le formulaire et les boutons. Il fonctionne maintenant dans IE8, mais la popup est toujours bloquée dans Chrome et Firefox :(. – Lyon
@Lyon: Chrome et FireFox peuvent regarder juste un niveau de profondeur, ou juste quelques déclarations dans le chemin du code.Afficher du code, et nous –
@Jeroen Merci :) Comme conseillé, j'ai modifié ma question pour inclure le code .. – Lyon