11548 sujets

JavaScript, DOM et API Web HTML5

Bonsoir,

Je souhaite créer une fausse popup de confirmation, dont le role serait le même que celui de confirm(), mais plus personnalisable.

Pour celà, première étape, créer une fonction qui va afficher une fausse popup.

Voici le code utilisé :

function show_popup(text){
		texte=document.createTextNode(text);
		cible=document.createElement("p");
		cible.appendChild(texte);
	
		popup=document.createElement("div");
		popup.setAttribute('id','popup');
		popup.appendChild(cible);
	
		document.body.appendChild(popup);
}


Evidement sous IE, celà ne marche pas complètement : le "text" est bien affiché, mais seul à la suite du document. La déduction que j'en tire est que l'id n'a pas été correctement appliquée, et j'aimerais donc savoir quelle alternative j'ai pour que celà marche sous IE ? (je peux faire un code pour IE et un pour les autres, ce n'est pas un problème...)

Merci d'avance
Modifié par Freedom_09 (18 Sep 2006 - 16:34)
Salut,

plusieurs choses :

As tu un exemple en ligne que nous vérifions ton diagnostic. Il n'y à première vue pas d'erreur dans le code, mais sans la page de test en ligne avec les éventuelles interactions d'autres scripts ou quelconque autre facteur, difficile de juger.

Une méthode de confirmation par JavaScript, as tu quelque chose côté serveur de plus sûr qui effectue le même traitement, la solution JavaScript n'étant qu'une vérification préalable pour éviter de recharger la page s'il y a une erreur ?

Tu parles d'une fonction confirm(), nous n'en avons pas vu la couleur.
++
Je trouve personnellement que vouloir remplacer la fonction confirm de cette façon est un peu prise de tête pour rien.
Mais bon, tu fais ce que tu veux.

Au lieu d'utiliser la fonction setATtribute pour donner un id, essaie toujours de voir ce que ça fait si tu le fais directement : div.id = ...
Olivier >> Effectivement, puisqu'il s'agit pour le moment de créer la popup et de l'afficher comme il faut, le confirm n'est pas créé.

Ensuite, non dans le cas du confirm, il n'y aura pas d'équivalent coté serveur dnas un premier temps. Mais le contexte est très particulier, je t'assure qu'en cas de js désactivé, la non apparition de la popup de confirmation n'est pas catastrophique. (je réfléchis tout de même à une solution )

Enfin concernant mon problème, j'ai effectivement fait une erreur dans mon diagnostique : le code marche très bien, en réalité c'est le position: fixed; qui n'est pas interprété par IE... Malin Smiley decu

QuentinC >> une fausse popup est moins agressive qu'un confirm, et j'aime bien pouvoir personnaliser un peu les choses... Smiley cligne
Modifié par Freedom_09 (18 Sep 2006 - 07:42)
Modérateur
Salut,

Freedom_09 a écrit :
Enfin concernant mon problème, j'ai effectivement fait une erreur dans mon diagnostique : le code marche très bien, en réalité c'est le position: fixed; qui n'est pas interprété par IE... Malin Smiley decu
Position: fixed sur IE Smiley cligne
Bonjour Freedom_09,
Freedom_09 a écrit :

Olivier >> Effectivement, puisqu'il s'agit pour le moment de créer la popup et de l'afficher comme il faut, Mais le contexte est très particulier, je t'assure qu'en cas de js désactivé, la non apparition de la popup de confirmation n'est pas catastrophique. (je réfléchis tout de même à une solution )
Smiley cligne

popup accessible ça éxiste !
chmel >> Je le sais bien, le but ici est d'en créer une moi-même.

Je compte bien la rendre accessible, mais celà passera probablement par le chargement d'une page intermédiaire... qui existe déjà.

Voici comment ça va se passer :
Il s'agit d'u site avec espace membre, et certaines actions vont demander une confirmation, de peur de l'effectuer accidentellement. Pour le moment, un clic sur l'action entraine un rechargement de la page avec un avertissement et la possibilité de confirmer ou annuler l'action. Maintenant, c'est quand même lourd pour une simple confirmation. D'un autre coté, je n'aime pas confirm(). D'oùli'dée de cette fausse popup, qui, tu le vois, n'aura pas d'incidence sur l'accessibilité...

Koala64 >> Merci pour le lien Smiley biggrin

Olivier >> Oui et non, mais vu que le rpoblème relève désormais du css, je vais mettre que ça l'est.
a écrit :

une fausse popup est moins agressive qu'un confirm, et j'aime bien pouvoir personnaliser un peu les choses...

Tu fais ce que tu veux... mais tu sauras que c'est moins accessible, par exemple pour celui qui a javascript activé mais qui nécéssite des aides techniques.

Pourquoi est-ce que tu n'aimes pas confirm ?
QuentinC >> Le risque existe, à moi d'expliciter suffisament ma popup pour que tout se passe bien dans le cas que tu évoques... d'ailleurs, les idées sont bienvenues. je suppose qu'un focus sur la popup est nécessaire ? quoi d'autre ?

Je n'aime pas confirm() pour un certain nombre de raisons :
- pas assez personnalisable coté design
- Je préfère un bouton "Effectuer l'action" (par exemple : Se connecter, Supprimer) à un simple "ok"
- Je n'aime pas l'aspect bloquant de confirm(). C'est un point de détail certes, mais quand un confirm ou un alert est ouvert, on n peut plus clqiuer sur autre chose, ce que je souhaite éviter.

Ce dernier point me gène aussi car ma popup remplacera aussi alert(), pour confirmer le bon déroulement d'une action. En ce cas je ne souhaite pas obliger les gens à cliquer sur "fermer" (au lieu de "ok" pour un alert()) pour pouvoir poursuivre leur navigation.

Ladite popup peut également s'enrichir en options cliquables, ce que ne permettrais pas un simple confirm()... etc...

Et puis tout ça est l'occasion pour moi d'appréhender la javascript de manière plus poussée que d'habitude...
Modifié par Freedom_09 (18 Sep 2006 - 19:06)
OK tes raisons sont compréhensibles.
C'est vrai qu'une boîte de dialogue permettant un nombre et des libellés de boutons modulable est quelque chose qui manque en javascript.

Un minimum serait d'autofocuser le bouton OK ou son équivalent dans ta fausse popup.
Modifié par QuentinC (18 Sep 2006 - 21:34)
Justement, le maximum pour toi ce serait quoi ?

à part le focus, qu'est ce qui peut rendre ce genre de popup facile d'accès à n'importe qui.
Rien, c'est ça le problème justement.
La seule chose qu'on peut faire concrètement, c'est positionner le focus sur le bouton OK.