11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai besoin d'ouvrir une fenetre modale : autrement dit, je veux que tant que la fenetre est ouverte, il soit impossible de passer le focus a une autre fenetre.

-Je sais qu'il y a une fonction qui fait ca avec ie mais cela ne me convient pas, je veux que ca marche avec presque tous les browsers.

- j'ai trouve sur des forums l'astuce suivante :
on met dans la fenetre 'modale' le code html suivant
<body onBlur="self.focus()">

J'ai essaye ca, mais ca ne marche pas vraiment. Ce que j'observe c'est que, quand ma fenetre 'modale' est ouverte, si je clique une fois a cote il ne se passe rien, mais si je clique une deuxieme fois a cote ma fenetre 'modale' passe en-dessous et une autre fenetre prend le focus.

Est-ce que d'autres ont essaye cette methode et ont obtenu de meilleurs resultats? Sinon, quelqu'un sait-il pourquoi ca ne marche pas avec moi? J'utilise firefox et j'envoie mon code html avec du php.

Enfin, quelqu'un a-t-il une autre astuce pour rendre une fenetre modale?

Merci d'avance

Bien a vous
Nardoel
a écrit :
J'ai besoin d'ouvrir une fenetre modale : autrement dit, je veux que tant que la fenetre est ouverte, il soit impossible de passer le focus a une autre fenetre.

-Je sais qu'il y a une fonction qui fait ca avec ie mais cela ne me convient pas, je veux que ca marche avec presque tous les browsers.


C'est le genre de problématique qui appelle quelques réflexions immédiates :
- si IE est le seul à pouvoir le faire, c'est sans doute une mauvaise idée Smiley ravi (IE est connu pour être très/trop permissif)
- si tu te retrouves confronté à ce genre de souci c'est qu'il y a un problème plus général de conception de ton application web. Tu perdras autant de temps à trouver une "pseudo-solution" qui marchera à peu près sur tous les navigateurs qu'à résoudre le problème de fond, celui qui fait que tu es obligé d'essayer de forcer la main de l'utilisateur ainsi.

Désolé de paraître aussi pessimiste, mais c'est d'expérience que je te donne ces quelques conseils...
Compte tenu de la reponse de fastclemmy, je precise pourquoi je veux faire ca.

J'ai developpe une 'application' qui gere les acces a une base de donnees de seminaires, avec des exposes, des orateurs, etc. Les utilisateurs autorises ont a leur disposition des formulaires de saisie des donnees. La saisie de certaines donnees est grandement facilitee si certains champs peuvent etre renseignes via une fenetre popup qui permet de saisir certaines donnees. Exemple type : quand je cree un expose, je choisis un orateur dans la liste des orateurs deja repertories, ou bien j'en cree un. Depuis la fenetre de creation d'un expose, je peux appeler une nouvelle fenetre de creation d'orateur.
J'ai fait ca et ca marche tres bien.
Ce que je voudrais, c'est que, une fois ouverte la fenetre de creation d'orateur, l'utilisateur soit oblige de la remplir, ou bien de la refermer, avant de passer a autre chose. Tout simplement parce que ca lui evitera de commettre des erreurs. Du genre : je laisse ca en plan pour faire mon cafe et en revenant j'oublie ou j'en etais et je laisse un formulaire a moitie rempli, que peut-etre ensuite je validerai par erreur pour un resultat foireux.

Ce n'est donc pas une necessite absolue mais une question de confort pour l'utilisateur (qui doit pouvoir etre un "nul" en informatique).