Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PERSONNALISER LES BOÎTES DE DIALOGUE


Information sur la source

Description

Cliquez pour voir la capture en taille normale
Bonjour,


Suite à une question qui m'a été récement posée, voilà un script qui permet afficher une boite de dialoque personnalisée.
J'espère que ça répondra aux questions.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de cedriclomb le 24/08/2007 09:45:40

Trop bien tu peux faire pareil avec les confirm ?? 10/10

signaler à un administrateur
Commentaire de popGG le 24/08/2007 09:48:04

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.

@+

signaler à un administrateur
Commentaire de amezghal le 24/08/2007 13:36:17

salut
la boite à message n'est pas modal...
donc ton bouton "valider" sert à rien, car le script va continué de s'executé

signaler à un administrateur
Commentaire de XtremDuke le 24/08/2007 16:22:34

amezghal, remplace le bouton "valider" par un bouton "fermer" ^^

signaler à un administrateur
Commentaire de popGG le 24/08/2007 18:02:14

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)...

signaler à un administrateur
Commentaire de XtremDuke le 25/08/2007 09:48:41

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)

signaler à un administrateur
Commentaire de amezghal le 25/08/2007 13:16:45

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.

signaler à un administrateur
Commentaire de XtremDuke le 27/08/2007 09:24:43

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

signaler à un administrateur
Commentaire de xenodus le 27/08/2007 19:30:31

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

signaler à un administrateur
Commentaire de popGG le 30/08/2007 09:20:07

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

signaler à un administrateur
Commentaire de XtremDuke le 31/08/2007 10:10:50

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.

signaler à un administrateur
Commentaire de SpySeth le 28/10/2007 07:37:29 8/10

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.

signaler à un administrateur
Commentaire de Florent06 le 28/11/2007 14:48:48 10/10

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.

signaler à un administrateur
Commentaire de karimflashmx le 26/12/2007 15:23:11

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 .
  

signaler à un administrateur
Commentaire de SpySeth le 28/12/2007 14:19:09

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';
}

signaler à un administrateur
Commentaire de SpySeth le 29/12/2007 09:36:56

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';
}

signaler à un administrateur
Commentaire de karimflashmx le 29/12/2007 21:13:08

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

signaler à un administrateur
Commentaire de SpySeth le 02/01/2008 09:25:21

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.

signaler à un administrateur
Commentaire de XtremDuke le 03/01/2008 16:40:34

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...).

signaler à un administrateur
Commentaire de SMaxime le 07/03/2008 11:42:06

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

signaler à un administrateur
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.

signaler à un administrateur
Commentaire de SebMoine le 25/03/2008 22:40:52 10/10

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

signaler à un administrateur
Commentaire de karimflashmx le 31/05/2008 11:55:11

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

signaler à un administrateur
Commentaire de XtremDuke le 02/06/2008 09:12:53

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

signaler à un administrateur
Commentaire de karimflashmx le 02/06/2008 10:49:10

merci c'est parfait maintenant ;)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Personnalisez javascript Alert '' ; [ par le_m3ellem ] Bonjour tt le monde !SVP ! J'aimerais savoir si on peut personnaliser la boite de dialogue qu'affiche la fonction javascript Alert(): ! la personnalis proprieté d'une classe 'undefined' [ par seb_oulba ] hello, je développe un petit outil pour ka-map (exemple ici : http://maps.dmsolutions.ca/demo/us_streets/iframe.html)afin de faire des requetes lor Empecher les alert() javascript dans une iframe [ par lolpop ] Bonjour,je n'y connais rien en javascript.Mais j'aurais besoin de votre aide.Sur mon site, j'ai une iframe en bas de page ou défile les sites des visi alert [ par diablo2323 ] je veux savoir un scripte qui peut  afficher  une alert lors de fermeture de navigateur afficher un message d'alert [ par corrsland ] Bonsoir à tous !Je suis nouvelle sur ce forum... j'ai découvert le site il y a peu...Je fait actuellement une licence pro Création pour le Web et je d Problème d'envoi de données [ par couicoui ] Bonjour, Je développe un site et j'utilise un XMLhttpRequest pour aller mettre à jour une table de ma base de données. Dans ma fonction javascript qui Changer les libellé des boutons de la boîte de dialogue confirm [ par rodman ] Bonjour à tous et à toutes,est ce que parmi vous tous, quelqu'un serait-il comment on change le libellé des 2 boutons de la boîte de dialogue confirm. Prototype et Array [ par syndrael ] Bonjour, Dans Script.Aculo.us (dernière version) on peut lire les ajouts dans Array. Comme ceci:Object.extend(Array.prototype, {   _each: function(ite fermeture d'une boîte de dialogue d'IE [ par anne13 ] Via un mailto dans un programme, j'envoie le contenu  d'un formulaire sous la forme d'un message outlook. Mon problème, Internet Explorer qui ouvre un sujet formulaire [ par limaseb ] J'ai un probleme sur mon formulaire aimerais le faire apparaitre en email outlook mais en colonne et non en ligne avec entre les informations &amp; ce


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Appels d'offres

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,546 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.