Bonjour à tous

J'utilise abondamment l'ouverture de fenêtres
window.open(...)
pour afficher des images en grand quand on clique sur une miniature (je sais qu'on peut faire autrement, mais c'est la solution choisie sur ce site depuis 2001, je ne vais pas changer les habitudes des utilisateurs réguliers)

Je voudrais ajouter un script qui teste si l'ouverture d'une fenêtre pour ce site par le navigateur de l'utilisateur, ce qui n'est pas très difficile... sauf que je ne sais pas comment tester ce script! Smiley confus
J'ai beau supprimer le site de tests de la liste des sites pour lesquels les popups sont autorisés, les navigateurs (FF et Chrome) procèdent à l'ouverture de ces fenêtres comme si de rien n'était.

Auriez vous une idée sur les raisons de ce comportement et comment tester mon script avant de le mettre en ligne?

Merci de votre aide.
Salut JP Smiley cligne

Pas de réponses directe à ta question.
En revanche, tu le sais bien toi même ce n'est pas vraiment une bonne pratique Smiley cligne

Du coup pourquoi n'utilises tu pas une modal ?
Tu peux parfaitement la remplir à l'ouverture avec un aller retour ajax.
Du coup tu n'aurais pas à te poser cette question.
De plus pour le responsive, même si le poids de l'image ne changerait pas, tu pourrai faire en sorte quelle rentre parfaitement dans la modal et du coup cela restera responsive Smiley cligne
Modérateur
Pour la raison, elle est la suivante:

Les blockers de popups de Chrome et Firefox ne bloquent pas toutes les popups, seulement les popups illégitimes.

Ouvrir une et une seule popup en réponse à une action de l'utilisateur (comme un click) est considéré comme un usage légitime et n'est pas bloqué.

Seuls des plugins additionnels peuvent bloquer toutes les popups.
Meilleure solution
Merci à tous pour vos réponses, kustolovic a mis le doigt sur la nature du problème: une ouverture de fenêtre suite à un clic de l'utilisateur n'est pas une popup.
Je ne suis pas sûr cependant que cela soit le cas pour tous les navigateurs.

En ce qui concerne les "bonnes pratiques", je ne sais pas qui décide qu'une pratique est "bonne" ou pas. Par exemple est-ce une "bonne pratique" pour gmail de regarder le contenu des courriels envoyés et de vous expédier des pubs en rapport avec le contenu?

Ouvrir l'image dans une <div> ou autre bloc modal est exactement le contraire de ce que nous voulons faire dans ce site. Sur un écran d'ordinateur, ou encore mieux sur un ordinateur doté de deux écrans, il est intéressant pouvoir déplacer la "grande image" en dehors de l'image de la page. Sur un appareil mobile, ce n'est techniquement pas possible, mais dans ce cas nos ouvrons une fenêtre qui prend tout l'écran et disparait quand on clique dessus, cela satisfait nos utilisateurs.

Vous trouverez des exemples dans pratiquement toutes les pages de texte du site https://osirisnet.net, par exemple https://osirisnet.net/mastabas/akhethtp_ptahhtp/akht_ptah_01.htm
Modifié par PapyJP (07 Nov 2017 - 11:37)
Tintin75 a écrit :
Donc l'ami PapyJP, n'a rien à modifier en gros.

Certes, pour autant que tous les navigateurs, même IE, se comportent "raisonnablement" comme FF et Chrome, mais rien n'est moins sûr!
J'utilise ta méthode depuis des années et jamais eu le moindre problème.
L'ouverture se fait en direct de ton site, tu ordonnes l'ouverture d'une nouvelle fenêtre, donc pour moi moi c'est pas du code parasite, mais bien un ordre du site. Par contre, si la personne bloque le javascript, c'est mort. Là, il faut bidouiller les réglages du navigateur, pour avoir la fonction. Par défaut, c'est oui, et recommandé par les navigateurs. Je lance une nouvelle version de mon site, et je me suis posé la question de changer le code. Finalement, je touche à rien, car j'ai rien trouvé de mieux, de manière simple. Après, il y a des combines pour faire autrement, je pense.
Le site est entièrement à base de JS. Donc si l'utilisateur bloque le JS, il ne voit rien du tout!
Ce n'est donc pas un problème, car
Les Shadoks a écrit :
s'il n'y a pas de solution, il n'y a pas de problème

Modifié par PapyJP (07 Nov 2017 - 18:17)