Echappement de caractères...

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Répondre
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Echappement de caractères...

Message par guilhem_mdg »

Bonjour,
Pourquoi le code suivant ne marche pas ?

Code : Tout sélectionner

document.getElementById('listeVignettesInserees').innerHTML='Code à insérer : <a href=\'#\' onclick=\'this.style.display='none';\' >x</a>
J'ai l'impression que ce sont les quotes 'none'; qui sont mal échappées...

Qu'en pensez-vous ?
Cordialement.
Guilhem.
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

oui, c'est bien l'erreur, plus la fin de la chaine qui n'est pas entre quote.
Moi je l'écrirai comme çà :

Code : Tout sélectionner

document.getElementById('listeVignettesInserees').innerHTML='Code à insérer : <a href="#" onclick="this.style.display=\'none\';" >x</a>';
Tu n'utilises pas un éditeur avec coloration syntaxique ?
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Si Jedit mais ton code ne marche toujours pas... :cry:

Je rajoute le début de ma ligne :

Code : Tout sélectionner

<a href="#" onclick="
document.getElementById('listeVignettesInserees').innerHTML='Code à insérer : <a href="#" onclick="this.style.display=\'none\';" >x</a>';
Cordialement.
Guilhem.
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

a ben forcément on a pas toutes les infos...

Code : Tout sélectionner

<a href="#" onclick="
document.getElementById('listeVignettesInserees').innerHTML='Code à insérer : <a href="#" onclick="this.style.display=\'none\';"'"
>x</a>
devrait marcher au niveau des quotes, mais 1°, le code html insérer (innerHTML) n'est pas complet (la balise a n'est pas complète et pas fermée), et 2°, tu devrais plutôt passer par une fonction déclarée en tête ou dans un fichier, ce serais quand même plus simple, onclick="myFunction();".
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Ok merci. C'est vrai que la fonction permet de résoudre le problème... Ou du moins le contourner mais l'essentiel c'est que ça marche ! :D
Cordialement.
Guilhem.
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Re: Echappement de caractères...

Message par calimo »

guilhem_mdg a écrit :

Code : Tout sélectionner

onclick=
Ah làlà !!!

Toujours utiliser des gestionnaire sd'événements indépendants du matériel, bon sang. C'est pourtant pas compliqué non ? :roll:

Voir aussi :
http://www.la-grange.net/w3c/WAI-WEBCON ... ent-events
http://www.la-grange.net/w3c/WAI-WEBCON ... le-scripts

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Calimo,
Connais-tu le contexte de mon application pour répondre ce genre de chose ?
:lol:
Cordialement.
Guilhem.
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Par contre je ne suis pas sûr de comprendre l'intérêt d'utiliser un élément "<a>" vu que ce n'est pas un lien. IE ne prend pas les évènements click sur les autres éléments ?
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

guilhem_mdg a écrit :Calimo,
Connais-tu le contexte de mon application pour répondre ce genre de chose ?
:lol:
Probablement pas, mais :
  • si elle est à usage privé, c'est bien, mais comme le code est sur le forum d'autres risquent de le voir et de l'utiliser tel quels, il faut bien l'indiquer ;
  • si elle n'est pas strictement à usage privé (= si une seule autre personne que toi pourrait être ammenée à l'utiliser) tu ne peux rien deviner sur ses habitudes.
En tous les cas, c'est une bonne habitude à prendre, car on voit beaucoup trop de "onclick" seuls qui privent toute une partie de la population de l'accès à toute une partie d'Internet :evil:

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.5) Gecko/20060731 Firedragon/dapper-security Firefox/1.5.0.5
lpgc
Lézard à collerette
Messages : 259
Inscription : 16 juil. 2006, 01:02

Message par lpgc »

bonjour, :D

A zut encore des trucs à corriger dans mon applic :?
Utiliser les événements automatiques au niveau application plutôt qu'au niveau interaction de l'utilisateur.En HTML 4.0, les attributs d'événements au niveau application sont "onfocus", "onblur" (l'opposé de "onfocus"), et "onselect". Noter que ces attributs sont désignés indépendamment du matériel, mais sont intégrés comme des événements spécifiques du clavier dans les navigateurs actuels.
Sinon, si vous devez utilisez des attributs dépendants du matériel, fournir des mécanismes redondants de saisie (c.à-d., spécifier 2 gestionnaires pour le même élément)
Utiliser "onmousedown" avec "onkeydown".
Utiliser "onmouseup" avec "onkeyup"
Utiliser "onclick" avec "onkeypress"
:?: Comprend pas tout... on peut pas utiliser les onclick :!:
... vaut mieux utiliser les événements au niveau application...
mais alors comment sait on quel contrôle induit l'événement ?

:idea: Visiblement faut également éviter de faire la distinction événement clavier et événement souri :)

Merci... petit à petit on essaie de devenir meilleur :D
Christian

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

lpgc a écrit : :?: Comprend pas tout... on peut pas utiliser les onclick :!:
Si tu peux… mais tu ne dois pas oublier que tout le monde ne peut pas utiliser une souris (sans compter les gens qui préfèrent tout simplement la navigation au clavier). Je pense en particulier aux handicapés moteurs et aux personnes mal-voyantes pour qui l'utilisation d'un dispositif de pointage est problématique.

Si tu n'utilises que onclick, ces personnes ne pourront rien faire.

Il faut donc soit utiliser des évènements "génériques" (onfocus, etc.) indépendants du dispositif, ou alors doubler les onclick d'un équivalent clavier (onkeypress par exemple).
Je peine à imaginer des situations ne correspondant à aucune de ces possibilités (des gens ne pouvant pas utiliser le clavier…).

Évidemment, je dis ça, mais nous sommes bien d'accord que de toutes façon, aucune action importante n'est réalisée en javascript :wink:

lpgc a écrit :... vaut mieux utiliser les événements au niveau application...
mais alors comment sait on quel contrôle induit l'événement ?
Ben… dans la spécification HTML évidemment. Où diable voudrais-tu aller chercher ces informations ? :roll:

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
teoli2003
Animal mythique
Messages : 7580
Inscription : 13 nov. 2005, 09:23

Message par teoli2003 »

lpgc a écrit : :?: Comprend pas tout... on peut pas utiliser les onclick :!:
Si, mais il est rare que tu le veuilles (sans le savoir, comme M. Jourdain).

En fait dans 99% des cas, ce que tu veux faire n'est pas réagir à un "click", mais à une "transmission du focus".

Ex. Sur un formulaire, l'utilisateur clique sur un Input. Tu veux (exemple), faire apparaître le fond de cet INPUT en rouge à ce moment.

Ce que tu veux, ce n'est pas réagir au click, mais bien au fait que l'utilisateur soit près à utiliser cet INPUT. Si l'utilisateur navigue en utilisant le clavier (avec des TAB), il arrivera sur cet INPUT sans déclancher le onclick (normal, il a pas cliqué). Donc, tu utilises le onfocus qui est l'événement associé à la fonction que tu veux intercepter et pas à l'opération physique.

Dans 99% des cas, on ne veut pas réagir aux onclick, mais bien aux onfocus.

(Il y a des exceptions, mais elles sont rares).

L'avantage du onfocus est que cela marche aussi avec des lecteurs brailles. Donc non seulement tu réagis vraiment à tous les cas, mais tu rends le tout plus accessible.
La liberté n'est jamais accordée de bon gré par l'oppresseur; elle doit être exigée par l'opprimé (Martin Luther King).
Les convictions sont des ennemis de la vérité plus dangereux que les mensonges. (Nietzsche).
Native Mozillian.
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

teoli2003 a écrit :En fait dans 99% des cas, ce que tu veux faire n'est pas réagir à un "click", mais à une "transmission du focus".
Je suis pas tout à fait d'accord, souvent on peut vouloir réagir à un clic sur un bouton. Si c'est un bouton submit on sait ce que ça déclenche, mais dans les autres cas on doit ajouter onclick et onkeypress (pour quand on appuie sur la barre d'espace).
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Message par Asumbaa »

Bonjour,

Juste une petite précision car je ne comprends pas tout : en navigant au clavier, quand j'arrive sur un lien Javascript qui réagit au onclick et que je tape Entrée avec le focus sur le lien, ça m'ouvre la popup. C'est une fonctionnalité de Firefox ? Parce que du coup, je vois pas bien où est le problème (pour les liens. Pour les input et autres, on est d'accord)

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
teoli2003
Animal mythique
Messages : 7580
Inscription : 13 nov. 2005, 09:23

Message par teoli2003 »

Benoit a écrit :
teoli2003 a écrit :En fait dans 99% des cas, ce que tu veux faire n'est pas réagir à un "click", mais à une "transmission du focus".
Je suis pas tout à fait d'accord, souvent on peut vouloir réagir à un clic sur un bouton. Si c'est un bouton submit on sait ce que ça déclenche, mais dans les autres cas on doit ajouter onclick et onkeypress (pour quand on appuie sur la barre d'espace).
Tu as raison; je n'avais pas pensé à ce cas. Le 99% était inapproprié. Peut-être l'est-il si on groupe ces deux actions.
La liberté n'est jamais accordée de bon gré par l'oppresseur; elle doit être exigée par l'opprimé (Martin Luther King).
Les convictions sont des ennemis de la vérité plus dangereux que les mensonges. (Nietzsche).
Native Mozillian.
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 4 invités