SHOWMODALDIALOG POUR TOUS LES NAVIGATEURS MODERNES

najnoujj Messages postés 8 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 5 novembre 2011 - 16 févr. 2006 à 20:55
cousinlol Messages postés 59 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 26 octobre 2015 - 29 juil. 2007 à 16:55
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36091-showmodaldialog-pour-tous-les-navigateurs-modernes

cousinlol Messages postés 59 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 26 octobre 2015
29 juil. 2007 à 16:55
Bon après des tests poussés, cela ne fonctionne pas puisque même l'exemple fourni avec le script (exemple.html) ne bloque pas la fenêtre. Bon c'est dommage, cela a fonctionné un temps qui est révolu.
cousinlol Messages postés 59 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 26 octobre 2015
29 juil. 2007 à 16:45
"Bonjour,

J'ai l'impression que depuis l'installation de la version 2.0.0.4 de firefox, ce script ne bloque plus les fenêtres."

Non, c'est une erreur de ma part, l'id sur le bouton ou le lien est indispensable.
Par exemple sur un lien.
Faire : <a id="t_tiers" onClick="...." fonctionne bien pour le blocage et l'enchainement des fenêtres

Faire : <a onClick="...." ne donne plus de blocage sur la fenêtre ouverte et plante aussi l'enchainement des fenêtres.

Donc attention de ne pas oublier l'id sur l'appel du script.
cousinlol Messages postés 59 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 26 octobre 2015
8 juil. 2007 à 08:31
Bonjour,

J'ai l'impression que depuis l'installation de la version 2.0.0.4 de firefox, ce script ne bloque plus les fenêtres.
cousinlol Messages postés 59 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 26 octobre 2015
14 mars 2007 à 15:33
Je garde temporairement la modif que j'ai fait et prévient moi lorsque tu auras eu le temps, je testerai volontier la modif à ce moment là.

Merci encore.
cs_MaX3315 Messages postés 170 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 11 mai 2009
14 mars 2007 à 15:06
Ha... oui...
Oui je nomme toute mes fenetres modal_x.

Faudrait quelle se nomme en réalité quelque chose comme:
modal_0
modal_0_0
modal_0_2
modal_0_2_0
modal_1

Je n'ai malheureusement pas beaucoup de temps à consacrer à cela les jours-ci.

Mais au moins il y a une trace ici de cette limitation à une seul niveau de modale.

Merci d'avoir mis le doigt dessus ;)
cousinlol Messages postés 59 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 26 octobre 2015
14 mars 2007 à 14:59
J'ai intégré la fonction dans un intranet et je n'ai pas d'url publique

J'avais placé un alert dans mon code comme ceci :

var id=MODAL_DIALOG_LIST.length;
alert(id);
var newWin=window.open(url,'modal_'+id,windowParam);

Ce qui a donné les valeurs de mon post précédent

Dans mon cas A est parente de B et B est parente de C

Lors de l'ouverture de C la 1ère fois au départ de A, B et C sont à 0.
Et c'est là qu'est le problème.

C ne sait pas que B est déjà là ?
cs_MaX3315 Messages postés 170 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 11 mai 2009
14 mars 2007 à 10:00
Ca marche à priori dans ton cas de figure.
Mais si maintenant tu ouvres deux fenetres devant modifiéer une meme reférence (exemple couleur et couleur de fond via css)... je pense qu'il y aura un petit conflit (genre: feneter deja ouverete... car son l'id demandé sera déjà utilisé).

aurais-tu une url publique pour tester ton problème. A mon avis c'est pas grand chose...
Normalement l'ID est donné selon la taille d'un tableau qui enregister dans la fenetre parente toutes les modales à leur ouverture.

cf MODAL_DIALOG_LIST.length dans la fonction.

Dans ta popup B as-tu bien un tel tableau... regarde voir quel est sa taille à l'ouverture de C... Est-ce que ce tableau existe, etc...
cousinlol Messages postés 59 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 26 octobre 2015
14 mars 2007 à 09:33
J'ai placé un alert('modal_'+id);

Lors du 1er appel:

la valeur sur B de alert('modal_'+id); est modal_0
la valeur sur C de alert('modal_'+id); est modal_0

ensuite

la valeur sur B de alert('modal_'+id); est modal_1
la valeur sur C de alert('modal_'+id); est modal_0

puis

la valeur sur B de alert('modal_'+id); est modal_2
la valeur sur C de alert('modal_'+id); est modal_0

sur C la valeur ne change jamais

Dois-je la forcer ?

Ce que j'ai fait, c'est changer 'modal_'+id par 'modal_'+reference

Reference étant l'id du bouton d'appel, cet id changeant entre B et C, je n'ai plus de problème.

Je teste à fond.
cousinlol Messages postés 59 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 26 octobre 2015
13 mars 2007 à 17:43
Bonjour

Merci pour ce code qui me permet de bloquer mes fenêtres sous FF.

Un petit soucis autour duquel je tourne depuis un bon moment

J'ai un script A qui ouvre une fenêtre B avec "newShowModalDialog"
La fenêtre B ouvre la fenêtre C avec "newShowModalDialog" aussi

On défini que "A" est un fomulaire dans un onglet de FF et "B" et "C" des fenêtres de style popup ouvertes avec "newShowModalDialog"

J'affiche "A" pour la 1ère fois, je fais un "newShowModalDialog" de "B", puis un "newShowModalDialog" de "C". "B" et "C" se confondent c'est la cata car en fait "B" n'existe plus et lors du retour de la fille vers la parent....perdu.

Je reviens sur "A" sans la raffraîchir, je me promène de "B" à "C" sans problème.

Je raffaîchi "A", et à nouveau "B" et "C" se confondent.

C'est donc lors de la 1ère utilisation des fenêtres à partir du formulaire de départ que la supperposition se produit.

Quel élément est inconnu la 1ère fois ?

Est-ce normal ? Non

Une idée ?

Merci d'avance
cs_MaX3315 Messages postés 170 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 11 mai 2009
9 mars 2007 à 11:06
Bonjour Musul,

Je viens de retester sous Firefox 2.0.0.2 et j'ai également cette exeption qui est déclenché.. toutefois, le script fonctionne.

En regardant de plus prêt il s'avère que c'est la déclaration du "handler" blur sur l'input text de saisie qui provoque cela.

Pour éviter cela, il suffit de virer les 3 lignes :
//mise en place d'un handler traitant la perte du focus
if (document.addEventListener) { document.addEventListener("blur", window.focus, true); }
else if (document.attachEvent) { document.attachEvent("onblur", window.focus); }

(bien sur, le blur n'est par conséquent plus géré, mais il reste directement le onKeyUp dans l'input).

Bonne programmation, et merci pour cette remonté de bug.
cs_MUSUL Messages postés 7 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 9 mars 2007
9 mars 2007 à 10:55
Testé sous firefox 2.0.0.1 et ne marche pas du tout :

Erreur : [Exception... "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "native frame :: :: <TOP_LEVEL> :: line 0" data: no]
cs_MaX3315 Messages postés 170 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 11 mai 2009
23 févr. 2006 à 16:12
Hum,

Donc IE ne connais pas window.open(url,target,"modal=yes,....)

Faudrait que je me repenche sur le sujet dans ce cas... quitte a utiliser la fonction d'IE lorsqu'elle existe... ca ne devrait pas changer grand chose au script.

Je posterai une remarque lorsque j'aurai corrigé ce léger bug d'ici quelque jour.

Merci pour les tests.
cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006
23 févr. 2006 à 15:43
Je viens de tester sur IE, le onblur ne doit pas fonctionner, car la fenêtre ne reste pas modale, je peux sans aucun pb cliquer en dehors et mettre le focus sur la grande fenêtre appelante !
Sur Opera la fenêtre est bien modale
cs_MaX3315 Messages postés 170 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 11 mai 2009
23 févr. 2006 à 15:35
Là ca passe sans problème sous Firefox.

J'ai mis à jour l'exemple en ligne (juste remplacer le champ input par un select de même id).

Pour les autres naviagteurs faudrait testé la nouvelel démo (cf le champ 'border')
http://codessources.votre-web.com/js/modalDialogue/exemple.html

Si ca passe pas il y aura une autre solution un peut plus bourrin a tester a savoir
Virer l'événement onBlur de la fenetre lorsque l'on a un unFocus sur le select.
Puis au onblur du select remettre le gestionnaire d'evenement de la fenetre.
cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006
23 févr. 2006 à 15:20
Je n'ai pas essayé avec IE, mais j'avais eu le pb y'a longtemps : as-tu essayé de mettre une liste déroulante SELECT dans une de tes popup ? As-tu observé quelque chose d'anormal ?

Dans mon cas, la liste SELECT ne pouvait pas s'ouvrir, car dérouler le SELECT provoquait un onblur.
cs_MaX3315 Messages postés 170 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 11 mai 2009
17 févr. 2006 à 10:02
En fait dans le zip il y a qu'un seul exemple... les deux autres fichiers HTML étant les popups ouvertes par exemple.html

Merci pour les encouragements, j'devrais encore avoir quelque trucs sympa à venir partager :)
cs_johann1 Messages postés 170 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 9 janvier 2008
17 févr. 2006 à 09:58
Chapeau Max, je pense que ton travail en stisfera plus d'un!!!

Bonne continuation!
(Ah oui, juste les 2 derniers exemples ne s'ouvrent pas...pour info!)
cs_MaX3315 Messages postés 170 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 11 mai 2009
17 févr. 2006 à 08:31
Heu... juste pour etre certain d'avoir compris?

Tu me demande des script qui t'arreterais les emails? Dans ce cas je pense qu'il faudrai mieux allez dans le forum pour en discuté car cette source n'a rien a voir avec les emails.
@+
najnoujj Messages postés 8 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 5 novembre 2011
16 févr. 2006 à 20:55
merci pour ces codes
mais j'aimerai bien avour des script qui taraitent les émails
merci