Aller au contenu

Discussion MediaWiki:Gadget-SecondWindowPreview.js

Le contenu de la page n’est pas pris en charge dans d’autres langues.
Une page de Wikipédia, l'encyclopédie libre.

Ouverture de la fenêtre et bloqueurs pop-up

[modifier le code]

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]