PERSONNALISER LES BOÎTES DE DIALOGUE

cedriclomb Messages postés 275 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 avril 2010 - 24 août 2007 à 09:45
ludojd Messages postés 8 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 10 mars 2011 - 10 mars 2011 à 21:41
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/43862-personnaliser-les-boites-de-dialogue

ludojd Messages postés 8 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 10 mars 2011
10 mars 2011 à 21:41
très bon travail !
slushgood Messages postés 3 Date d'inscription mercredi 27 octobre 2010 Statut Membre Dernière intervention 27 octobre 2010
27 oct. 2010 à 11:17
Bonjour je reviens sur se sujet car j'aurais besoin d'un petit coup de main.
voila j'ai une première fenêtre du type Html:

<html>
<head>
<meta http-equiv= "Content-Type" content="text/html; charset=iso-8859-1">
<LINK rel=stylesheet type="text/css" href="include/opac.css">
<title>Microbib Opac - Fiche Document</title>
<link rel="shortcut icon" href="images/icobook.ico" />
<script type="text/javascript" src="include/prototype.js"> </script>
<script type="text/javascript" src="include/window.js"> </script>
<script type="text/javascript" src="include/debug.js"> </script>
<script type="text/javascript" src="include/securite.js"></script>
<script type="text/javascript">
<!--
var sesPlus = new Array("sestitres","sesauteurs","sonresume");

function init_msg()
{
for(var i=0; i<sesPlus.length; i++)
if(document.getElementById(sesPlus[i]).style.display == "block")
document.getElementById(sesPlus[i]).style.display = "none";
}

function toggle_msg(n)
{
init_msg();
var id=sesPlus[n]; document.getElementById(id).style.display (document.getElementById(id).style.display "none" ? "block" : "none");
}

function revenir()
{
if(LireCookie('affine') == 1) location.replace('affineliste.wco');
else if(LireCookie('affine') == 2) location.replace('trier.wco');
else location.replace(LireCookie('recherche'));
}

var support = '<%= detail.document%>';
var numero = '<%= detail.no_exemp %>';

//-->
</script>
</head>



<li>[# ]</li>
<li>Le Catalogue Commun
</li>
<li>[# >>Recherche Simple]</li>
<li>[# >>Recherche Etendue]</li>
<li>[# >>Recherche par Mot-Matière]</li>
<li>[# >>Nouveautés]</li>
<li> <script language="JavaScript">
<!--
if(LireCookie(COOKIE_FONC_RESERV)==".T.")
document.write(espacelecteur());
//--></script>
<li> <script type="text/JavaScript">
<!--
if(estConnecte())
document.write(estconnecte()); ;
//--></script>
<li> <script language="JavaScript">
<!--
if('<%= multisite %>'==".F.")
document.write(reglements());
//--></script>

<li> <script language="JavaScript">
<!--
if(LireCookie(COOKIE_FONC_MULTISITE)==".T.")
document.write(multisite());
//--></script>




<%=detail.document+" N° "+detail.no_exemp%>



<center>
<%= IIF(!empty(detail.type_docum),"","NR") %>
</center>,
Titre principal,
,
<%= detail.titre %>,

----

----

Sous-Titre,
,
<%= detail.soustitre %>,

----

Autres Titres,
,
<%= detail.autre_tit %>,

----

Responsabilité,
,
<%= detail.auteur %> <%= detail.fonction %>,

----

Autres Responsabilités,
,
<%= detail.autre_aut %>,

----

Editeur/Date d'édition,
,
<%= detail.editeur %> / <%= detail.annee_ed %>,

----

Collection/Série,
,
<%= detail.collection %> / <%= detail.serie %>,

----

<%= IIF((detail.type_docum="V"),"Copyright/Support/Collation",IIF((detail.type_docum="S"),"N°Distributeur/Support/Détails",IIF((detail.type_docum="E"),"ISBN/Support","ISBN/Nb pages/Format"))) %>,
,
<%= IIF((detail.type_docum="V"),detail.copyrigh + " / " + (IIF(detail.support="A","VHS",IIF(detail.support="B","DVD",IIF(detail.support="C","DivX",IIF(detail.support="U","Autre","NR"))))) + " / " + detail.version + " " + detail.couleur + " " + TRANSFORM(detail.duree) + "minutes",IIF((detail.type_docum="S"),detail.no_distr + " / " + (IIF(detail.support="A","CD Audio",IIF(detail.support="B","K7 Audio",IIF(detail.support="C","DVD Audio",IIF(detail.support="D","Disque vinyl",IIF(detail.support="U","Autre","NR")))))) + " / " + detail.depot_le + " " + detail.type_enr,IIF((detail.type_docum="E"),detail.isbn + " / " + (IIF(detail.support="A","CD-ROM",IIF(detail.support="B","Disquette",IIF(detail.support="C","DVD-ROM",IIF(detail.support="D","Fichier numérique",IIF(detail.support="E","Site Internet",IIF(detail.support="F","Autre",IIF(detail.support="G","Textes-références-périodiques","NR")))))))),detail.isbn +" / " + detail.nb_page + " / " + detail.dimensio))) %>,

----

Bibliothèque dépositaire de cet exemplaire : <%= detail.ville %>,

<center>

<%= IIF(!empty(detail.code_lan),"","NR") %>
</center>,
----

Type de document,
,
<%= detail.statut%>,

----

Disponibilité,
,
<%= iif(empty(detail.dat_retpre),"Ce document est disponible","Retour prévu le " + dtoc(detail.dat_retpre) + "") %>,

----

Genre/Public visé,
,
<%= detail.genre %> / <%= detail.pub_vise %>,

----

Localisation/Cote,
,
<%= detail.localisati %>/ <%= detail.cote %>,

----

Mot(s) matière,
,
<%= detail.matiere %>,

----

Résumé,
,
<%= detail.resume %>
----, <center>
<hr>
<script language=\"JavaScript\">

if(LireCookie(COOKIE_FONC_RESERV)==\".T.\")
document.write(lienReservation());
</script>
</center>
</td>




<< Revenir en arrière

Site où récuperer le livre
<SELECT NAME ="site_depot">
<option value="1">premier
<option value="2">deuxieme
<option value="3">troisieme
<option value="5">quatrieme
</SELECT>

</html>

Ne vous souciez pas trop du contenu mais plutôt des dernières lignes elles font apparaitre une fenêtre Modal avec un menu a choix multiple.

Mon securite.js contient entre autre les infos suivante:
// Méthode site depot

function openDialog(id) {
Dialog.alert($(id).innerHTML, {className: "alphacube", width:300,
okLabel:"Ok",ok: reserver(),
})
EcrireCookie(COOKIE_SITE_DEPOT,$('site_depot').getInputs('text'));

}

Ma fenêtre apparait tout ce passe bien ,
mais voila mon dilemme j'aimerais récupérer dans un cookie "site_depot" le résultat choisi dans ma fenêtre modal ? comment faire ?
merci pour votre aide.
leejkd Messages postés 3 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 27 juillet 2010
25 mars 2010 à 13:17
Rien à dire, vous pouvez faire la même chose avec boite confirm et prompt.
Oumbra Messages postés 23 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 14 mars 2010 34
11 févr. 2010 à 15:23
J'ai enfin trouvé :)

Je vous explique donc comment avoir une boite de dialogue avec un effet modal :)

1. Placer un div en DEBUT de fichier html (JUSTE APRES body), cela simule un fond grisé mais rien de base. (mon image 'shadow.png' est une image grise):

2. Ajouter les lignes suivantes 'ShowFond();' et 'HideFond();' tel que :

<!-- dans la fonction initMsgBox() -->
window.alert = function(msg)
{
showMsgBox(msg);
ShowFond();
}

<!-- dans la fonction initMsgBox() -->
btn.onclick = function()
{
closeMsgBox();
HideFond();
}

<!-- dans la fonction showMsgBox(content) -->
$('msgBoxContent').innerHTML = content;
centerOnScreen($('msgBox'));
new Effect.Appear('msgBox',{duration:0.2});
ShowFond();
}

3. Placer les fonctions suivantes dans le fichier, cumstomMsgBox.js :

function ShowFond()
{
var Obj;
//-- on affiche le fond
Obj = document.getElementById('D_FOND');
if( Obj)
{
with( Obj.style)
{
position="absolute";
display="";
left = "0px";
top = "0px";
}
}

}

function HideFond()
{
var Obj;
Obj = document.getElementById('D_FOND');
if( Obj)
{
with( Obj.style)
{
display="none";
}
}
}

et voila vous avez désormé une boite de dialogue alert() avec un effet modal !!!
Pour appeler une boite de dialogue sans bouton ou autre évenement de l'utilisateur (click, reload, etc), placez : "Event.observe(window, 'load', initMsgBox, false);" dans le header de la page html et lorsque vous appelez votre boite (moi je le fais lorsque des restriction php sont fausses ou spéciales) et bien il suffit de faire un :
"<script language='javascript'>initMsgBox();alert('Votre message');</script>"

Voilà !!

Je remercie tout particulièrement duke pour son aide :)

Au revoir et a bientot :)

ps: je souhaite savoir s'il est possible de faire la meme chose avec une boite de dialogue prompt()???
N'hésitez pas à m'aiguiller, je fais beaucoup de recherche mais bon un peu d'aide est toujours bien venue :)
Oumbra Messages postés 23 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 14 mars 2010 34
9 févr. 2010 à 20:19
Ça Fonctionne enfin !!!!!!!!!!!!!

Enfin pas complètement ^^'...

Avec l'amélioration que j'ai cité au-dessus (le grisage du fond) et bien ma fonction de grisage passe dessus ma belleuh fenêtre :(

Je ne sais pas ou placer ma fonction de grisage pour quelle soit affichier avant ma fenêtre.

Pourrais tu m'éclairer ?
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
9 févr. 2010 à 18:58
Si tu veux lancer une alert au chargement de ta page, essaie ça :

echo "

<script type="text/javascript">
initMsgBox();
alert("Désolé,
mot de passe érroné.");
</script>";
Oumbra Messages postés 23 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 14 mars 2010 34
9 févr. 2010 à 13:21
Voici le bout de code qui me fais #@!? :

echo "

<script type="text/javascript">
alert("Désolé,
mot de passe érroné.");
</script>";

Je spécifie que lorsque je charge la page l'alert() se lance bien mais sans design ni rien mais lorsque j'appuie sur le bouton miracle ça fonctionne ...
Oumbra Messages postés 23 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 14 mars 2010 34
9 févr. 2010 à 13:18
Bonjour XtremDuke,

Tout d'abord un grand merci pour ton attention car je désespère, je cherche vraiment d'arrache pied (si ça continu j'en aurais plus xD).

Ta solution me permet une chose, ne pas déclarer plusieurs fois : Event.observe(window, 'load', initMsgBox, false); à chaque fois que je fais un bouton pour ouvrir la fenêtre mais celà ne fonctionne toujours pas en appelant directement une alert('blabla'); dans le html au chargement de la page :'(.
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
9 févr. 2010 à 12:43
Salut Oumbra,

Je ne me souviens guère de cette source mais de mémoire, voilà la démarche à suivre :

La ligne suivante : Event.observe(window, 'load', initMsgBox, false); permet d'initialiser le "moteur" de rendu des boîtes à afficher. Elle ne doit être appellée qu'une fois au chargement de ton document. Il faut placer celle-ci soit à la fin de ton document, soit dans l'entête (balise <header>).
En suite, il ne reste plus qu'à lancer une 'alert()' classique quand bon te sembles.

Donc dans l'ordre : initialiser le rendu au chargement du document via "Event.observe(..." puis lancer une 'alert()' quand tu en as besoin.
Oumbra Messages postés 23 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 14 mars 2010 34
9 févr. 2010 à 01:18
J'en peux plus je ne trouve pas :'(, j'ai décortiqué les fichiers javasscript mais je ne comprends pas quelle fonction je pourrais appeler directement au lieux de passer par un onclick=alert()...
Oumbra Messages postés 23 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 14 mars 2010 34
9 févr. 2010 à 00:02
edit de mon précédent poste:

echo "

<script type="text/javascript">
Event.observe(window, 'load', initMsgBox, false);
</script>";

Je tiens également que le problème de modal peu être 'bidouillé' il suffit d'appliquer les choses suivante :

1. Placer un div en fin de fichier html (juste avant body), cela simule un fond grisé mais rien de base. (mon image 'shadow.png' est une image grise):

2. Ajouter les lignes suivantes 'ShowFond();' et 'HideFond();' tel que :

window.alert = function(msg)
{
showMsgBox(msg);
ShowFond();
}

btn.onclick = function()
{
closeMsgBox();
HideFond();
}

3. Placer les fonctions suivantes dans le fichier, cumstomMsgBox.js :

function ShowFond()
{
var Obj;
//-- on affiche le fond
Obj = document.getElementById('D_FOND');
if( Obj)
{
with( Obj.style)
{
position="absolute";
display="";
left = "0px";
top = "0px";
}
}

}

function HideFond()
{
var Obj;
Obj = document.getElementById('D_FOND');
if( Obj)
{
with( Obj.style)
{
display="none";
}
}
}

Voila le tour est joué.

Mais j'ai toujours mon problème d'appel de cette fonction :'(.
Je n'arrive à l'appeler que par onClick ...
Dès lors que je fais un simple :

echo "
<script type="text/javascript">
alert('Désolé,
mot de passe érroné.');
Event.observe(window, 'load', initMsgBox, false);
</script>";

Cela n'affiche qu'une alert('Désolé,
mot de passe érroné.') basique...
Oumbra Messages postés 23 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 14 mars 2010 34
8 févr. 2010 à 19:55
Bonjour, tout d'abord exellent script qui fonctionne à la perfection.
Seul petit point noir, je n'arrive pas à le lancer sans a avoir a appuyer (ouf beaucoup de A... ^^) sur un bouton. J'ai bien essayer la méthode que tu as proposer :

"Commentaire de XtremDuke le 07/03/2008 14:49:56
SMaxime :

Oui biensur, supprime les lignes suivantes :

window.alert = function(msg){
showMsgBox(msg);
}

De ce fait, tu pourras afficher la boite perso par la fonction showMsgBox(msg) quand bon te semblera."

Mais hélas sans résultat (ni fenêtre ni message d'erreur...) je ne sais pas comment faire pouvais vous m'expliquer ?

dans mon script je dois afficher une fenêtre avec un contenu différent selon des tests en php.
Mon php fonctionne mais lorsque je fait :

<script type="text/javascript">
alert(' Désolé,
mot de passe érroné.');
Event.observe(window, 'load', initMsgBox, false);
</script>";

Il m'affiche une vulgaire alert (toute caca !!!) alors qu'avec un bouton :

<script type ="text/javascript">
alert('Désolé,
mot de passe érroné.');
Event.observe(window, 'load', initMsgBox, false);
</script>";

il m'affiche ma belleUh fenêtre.

Pourriez vous m'expliquer, s'il vous plait ?
karimflashmx Messages postés 16 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 6 février 2008
2 juin 2008 à 10:49
merci c'est parfait maintenant ;)
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
2 juin 2008 à 09:12
Salut karimflashmx,

Comme je l'ai dis plus haut, c'est un simple exemple d'affichage de boite de dialogue. Et ce type de personnalisation n'est pas modale. Pour empecher l'utilisateur de modifier ton formulaire, tu peux utiliser l'objet Form qu'offre Prototype. Tu trouveras certainement ton bonheur à l'adresse suivante :

http://prototypejs.org/api/form/disable

Ciao
karimflashmx Messages postés 16 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 6 février 2008
31 mai 2008 à 11:55
très bien code parfait mais ca reste une petite chose pour que ce code sera totalement parfait et un génial affaire .
dans mon cas j'ai un formulaire et j'ai utiliser ce code pour la vérification des champs , mais dés que la boite est ouvert je trouve que je peut touchez au champs les modifier même que la cette boite d'alerte est ouvert .
comment faire pour que je désactive l'accé au formulaire lorsque la boite est ouvert.
merci d'avance
cs_SebMoine Messages postés 14 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 27 mai 2009
25 mars 2008 à 22:40
cool ton script
j'ai fait ma personnalisé de message (ou boite de dialogue)
[je m'excuse pour ce doublon] le voici le mien

http://www.javascriptfr.com/codes/MESSAGE-PERSONNALISER_46177.aspx
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
7 mars 2008 à 14:49
SMaxime :

Oui biensur, supprime les lignes suivantes :

window.alert = function(msg){
showMsgBox(msg);
}

De ce fait, tu pourras afficher la boite perso par la fonction showMsgBox(msg) quand bon te semblera.
SMaxime Messages postés 1 Date d'inscription lundi 5 février 2007 Statut Membre Dernière intervention 7 mars 2008
7 mars 2008 à 11:42
Salut !!! D'abord, bravo pour le script. Mais c vrai que si le code était commenté je ne serais pas obligé de faire ce post.

Est-il possible d'utiliser ces boites de dialogues, sans avoir à cliquer sur un bouton ???
Car cela fct très bien avec un clic sur le bouton, mais pas en passant par un alert "normal".

Merci
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
3 janv. 2008 à 16:40
Info pour ceux et celles qui utilisent Proto 1.6 : Vous pouvez oublier la fonction getLayoutOffsets() car la derniere version du framework en date possède nativement une fonction permettant de récuperer le viewport (quel soulagement...).
SpySeth Messages postés 4 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 2 janvier 2008
2 janv. 2008 à 09:25
Dans le premier code, j'utilise une technique qui ne fonctionne que sous les navigateurs qui respecte les standards (Firefox, Opéra, Safari...) et Internet Explorer version 5.5 et inférieur. Pour IE 6 et 7 cela ne fonctionne pas :

var screenHeightDecal = window.pageYOffset || document.body.scrollTop;

window.pageYOffset <-- compris par Firefox et compagnie
document.body.scrollTop; <-- compris par IE 5.5 et moins

C'est pour ça que dans le deuxième code j'ai ajouter la méthode pour IE 6 et 7 :

var screenHeightDecal = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
return [screenWidth,screenHeight,screenHeightDecal];

document.documentElement.scrollTop <-- pour IE 6 et 7

J'ai aussi rendu le code plus logique : c'est la fonction getLayoutOffsets() qui permet de récupérer les informations de positionnement du canevas (~fenêtre) du navigateur, j'ai ajouter le bout de code (var screenHeightDecal = ...) qui récupère la position du canevas par rapport au haut de la page dans cette fonction, et j'ai modifier la fonction centerOnScreen() pour utiliser cette nouvelle information pour centrer la fenêtre.
karimflashmx Messages postés 16 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 6 février 2008
29 déc. 2007 à 21:13
salut SpySeth merci pour ton aide , j'ai utilisé ton premier code et vraiment ca marche très bien je sais pas est-ce que il ya il une erreur ? si oui c'est quoi exactement ?
merci
SpySeth Messages postés 4 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 2 janvier 2008
29 déc. 2007 à 09:36
J'ai remarqué une erreur dans cette modification, désolé.

Donc il faut pour que ça fonctionne remplacer la fonction gerLayourOffsets() ET la fonction centerOnScreen() par ça :

function getLayoutOffsets(){
var de = document.documentElement;
var screenWidth = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
var screenHeight = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
var screenHeightDecal = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
return [screenWidth,screenHeight,screenHeightDecal];
}

function centerOnScreen(obj){
var screenOffsetWidth = getLayoutOffsets()[0];
var screenOffsetHeight = getLayoutOffsets()[1];
var screenOffsetHeightDecal = getLayoutOffsets()[2];

if(obj.style.position!='absolute') obj.style.position = 'absolute';
obj.style.left = (screenOffsetWidth/2)-(obj.getWidth()/2)+'px';
obj.style.top = (screenOffsetHeight/2)-(obj.getHeight()/2)+screenOffsetHeightDecal+'px';
}
SpySeth Messages postés 4 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 2 janvier 2008
28 déc. 2007 à 14:19
karimflashmx > Remplace la fonction centerOnScreen() par ce code :

function centerOnScreen(obj){
var screenOffsetWidth = getLayoutOffsets()[0];
var screenOffsetHeight = getLayoutOffsets()[1];

var screenHeightDecal = window.pageYOffset || document.body.scrollTop;

if(obj.style.position!='absolute') obj.style.position = 'absolute';
obj.style.left = (screenOffsetWidth/2)-(obj.getWidth()/2)+'px';
obj.style.top = (screenOffsetHeight/2)-(obj.getHeight()/2)+screenHeightDecal+'px';
}
karimflashmx Messages postés 16 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 6 février 2008
26 déc. 2007 à 15:23
salut merci pour le script c'est génial mais je veut voir comment on peut personaliser la position de la boite d'alert au melieu de l'ecran , c'est a dire si j'ai en bas de ma page un champs pour inserer une adresse email et un bouton valider alors quand j'ai fait le test je trouve que la boite s'affiche en haut ce qui meme ne se voi pas .
Florent06 Messages postés 150 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 31 août 2008 1
28 nov. 2007 à 14:48
superbe !!! 10/10

par contre, est-ce qu'on peut faire en sorte qu'il y ait un évènement "hover" sur le bouton "Valider" ? De manière à faire comme sur le bouton qui ferme la fenêtre.
SpySeth Messages postés 4 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 2 janvier 2008
28 oct. 2007 à 07:37
Pour cette source soit parfaite il faudrait que même lorsque les CSS sont désactivé l'on ne voit pas la boite de dialogue.
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
31 août 2007 à 10:10
Salut popGG et merci pour ton commentaire. Cependant, window.showModalDialog est une instruction réservée à IE... Il n'y a pas de remède miracle pour reproduire vraiment une fenêtre modale. Enfin à ma connaissance. La seule alternative est de 'locker' l'interface.
popGG Messages postés 23 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 9 novembre 2007
30 août 2007 à 09:20
Salut XtremDuke,

Bien que la modalité d'un alert ne soit pas vraiment un problème (pour moi en tout cas), je pense que tu devrais essayer de résoudre ce conflit. Sachant que le "modal" est une fonction système, j'ai trouvé une source intéressante que je te conseille de regarder:
http://www.javascriptfr.com/code.aspx?ID=34989
window.showModalDialog me semble approprié pour une éventuelle évolution de ton alert.

Bonne journée
xenodus Messages postés 2 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 27 août 2007
27 août 2007 à 19:30
pour simuler un un modal met un flag que tu test dans une timer sa voir une boucle mais bon risque de gele des navigateur a toi de voir
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
27 août 2007 à 09:24
amezghal :
Je suis tout à fait d'accord avec toi mais comme je l'ai dit plus haut, ce script n'est applicable qu'à une alert et non un prompt ou un confirm.
Ensuite, et par définition, une fenetre modale est une fenetre dont la fermeture est obligatoire pour récuperer de focus de son parent... c'est tout. Le fait que les navigateurs gèlent les scripts pendant l'execution d'une fenetre modale n'a rien à voir avec le concept de modalité.

Have Fun
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
25 août 2007 à 13:16
modale=le script arrete son execution jusquà qu'on clique sur un bouton, or la solution que ta proposé(claque noir avec opacité x.xx) ne permet pas ça, donc ce script sert seulement à afficher des messages, donc tu peux pas l'améliorer pour qu'il simule un "confirm"
..., car "modale" est une fonction systeme.
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
25 août 2007 à 09:48
Je suis de l'avis de popGG : contrairement à un prompt ou à un confirm, je ne vois pas l'interet pour une alert de geler l'execution du script.

Il est tout à fait possible de simuler une alert modale en créant un calque absolu avec les dimensions de la fenêtre puis de la surcoucher avec la boite de dialogue. (un calque noir avec une opacité de .75 est du bel effet)
popGG Messages postés 23 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 9 novembre 2007
24 août 2007 à 18:02
Bien vu amezghal! Je n'ai pas fait attention à ce détail. En fait, modal signifie que l'alerte doit être fermer pour récupérer le focus sur ta page HTML. (je savais pas trop la définition, merci google)

Actuellement, sur ta source, on peut réaliser d'autres opérations tout en mettant ton message sur le côté. (bon c'est pas trop génant ce truc... Ton message a bien été envoyé et j'ai pu lire son contenu ce qui est, avant tout, son boulot non??).

Je suis pas expert prototype.js ou scriptaculous donc je préfère ne pas dire de connerie mais je pense qui y a moyen de contourner le problème avec des evenements (quand j'sais pô, j'bidouille voila!...). Mais perso, je laisserais tel quel car le modal d'un alert ne sert à rien (c'est mon avis).

En tout cas, merci pour ta source, je vais surement l'utiliser pour mon site perso si ça ne te gène pas (z'aime bien ze qui est zolie)...
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
24 août 2007 à 16:22
amezghal, remplace le bouton "valider" par un bouton "fermer" ^^
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
24 août 2007 à 13:36
salut
la boite à message n'est pas modal...
donc ton bouton "valider" sert à rien, car le script va continué de s'executé
popGG Messages postés 23 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 9 novembre 2007
24 août 2007 à 09:48
C'est beaux et le code est propre. Rien à dire! J'ai hâte de voir toutes les merveilles que tu peux nous offrir avec Script.aculo.us.

C'est sans contexte un 10 ;D

Petit reproche néanmoins: je pense que tu devrais commenter un peu plus tes sources, surtout au niveau du js.

@+
cedriclomb Messages postés 275 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 avril 2010 1
24 août 2007 à 09:45
Trop bien tu peux faire pareil avec les confirm ?? 10/10
Rejoignez-nous