Discussion MediaWiki:Gadget-SecondWindowPreview.js

Dernier commentaire : il y a 2 ans par Od1n dans le sujet Ouverture de la fenêtre et bloqueurs pop-up

Ouverture de la fenêtre et bloqueurs pop-up

modifier

Actuellement, l'ouverture de la fenêtre est bloquée par les navigateurs modernes (ça affiche un bandeau du genre « le navigateur a bloqué une fenêtre pop-up »).

Il y aurait deux solutions pour rendre le script fonctionnel dans ce cas :

  • Si le window.open() a retourné null, lancer une boucle pour choper la fenêtre une fois que l'utilisateur l'a autorisée dans le navigateur :
if (!SecondWindowPreview.Variable.NewWindowPreview) {
    let retryer = function () {
        // syntaxe spéciale permettant de récupérer une fenêtre existante
        let handle = window.open("", "NewWindowPreview");
        if (handle) {
            SecondWindowPreview.Variable.NewWindowPreview = handle;
            SecondWindowPreview.Function.InitWindow();
        } else {
            setTimeout(retryer, 1000);
        }
    };
    retryer();
} else {
    SecondWindowPreview.Function.InitWindow();
}

Mais il y a un problème : tant que la fenêtre n'a pas été autorisée, ça tourne en boucle et le navigateur pense qu'il continue de bloquer des pop-ups supplémentaires… (chez moi ça affiche un compteur « N pop-ups ont été bloqués » qui augmente indéfiniment…)

  • Ajouter un élément d'interface, que l'utilisateur devra cliquer pour effectuer l'ouverture de la fenêtre. Normalement, les bloqueurs pop-ups doivent laisser passer la fenêtre dans ce cas.

od†n ↗blah 21 mars 2022 à 19:25 (CET)Répondre

Revenir à la page « Gadget-SecondWindowPreview.js ».