JeuWeb - Crée ton jeu par navigateur
Problème d'apostrophe - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Problème d'apostrophe (/showthread.php?tid=4842)

Pages : 1 2 3


Problème d'apostrophe - Argorate - 25-05-2010

Hello,

voilà j'aurais besoin d'un petit coup de main car je suis bien ambeté en se moment par les apostrophes en JS, sachant que je n'ai pas droit au php et donc aux fonctions addslashies qui m'aurait bien été utile.

voilà se que j'ai

on mouseover = "info_bulle('${node.properties.title}')"

Cela fonctione très bien mais voilà, quand la chaine de caractere ${node.properties.title} contient une ou plusieurs apostrophes, evidemment il n'aime pas.

Donc voilà la liste des choses que j'ai essayé et qui ne fonctionne pas:



on mouseover = "test(${node.properties.title})" //besoin de '' pour encadrer la chaine

on mouseover = "test('${node.properties.title}')" //conflit avec les apostrophes

on mouseover = "test(\"${node.properties.title}\")" //marche pas

function test(val)
{
alert(val);
val.replace("'", "\'");
alert(val);
}


on mouseover = "info_bulle(${node.properties.title}.replace("'", "\'"))" //conflit guillemet

on mouseover = "info_bulle(${node.properties.title}.replace(\"'\", \"\'\"))" //marche pas

Voilà une autre idée?


PS: j'ai mis "on mouseover" partout, parceque si je met en un mot ça fait ça :
onmouseover =



RE: problème d'apostrophe - Allwise - 25-05-2010

Salut,
Et avec ça :
Citation :.replace(/'/g, "\\\'")

Ça donne quoi ?


RE: problème d'apostrophe - Zamentur - 25-05-2010

Ben déjà tu peux mettre ton texte dans des conteneur type div que tu caches via display:none et ensuite tu fait appel à l'id de la div pour récupérer le texte.

Sinon j'ai l'impression que çà utilise eval donc dans ce cas j'essaierai de doubler l'antislash.

Et sinon j'essaierai aussi
onmouseover = function(){
test(${node.properties.title})
};

Mais je ne connais pas beaucoup les bibliothèques js, ma pratique du js étant très vielle et n'ayant pas refait de gros trucs depuis.


RE: problème d'apostrophe - Argorate - 25-05-2010

Allwise:

je viens de tester:

onmouseover="test(${node.properties.title}.replace(/'/g, "\\\'"))"
onmouseover="test(\"${node.properties.title}\".replace(/'/g, "\\\'"))

et ça met tjs "ilegal caracter" ou ") missing"

Zamentur:

je vais tenter l'astuce du div Wink
C'est bon ça marche Smile
Super l'astuce d'un input hidden, c'est impec! Wink


PS: me suis rendu compte d'une erreur idiot dans la fonction test:

vaut mieux faire val = val.replace(machin) sinon je risque pas de voir grand changement dans mon alert^^

Bref, merci a vous Wink


RE: problème d'apostrophe - Allwise - 25-05-2010

Dans les 2 lignes de ton exemple tu oublies effectivement la parenthèse fermante Wink


RE: problème d'apostrophe - Argorate - 25-05-2010

erreur de copie ^^


RE: problème d'apostrophe - Anthor - 26-05-2010

Code PHP :
<?php 
function addslashes (str) {
// Escapes single quote, double quotes and backslash characters in a string with backslashes
//
// version: 1004.2314
// discuss at: http://phpjs.org/functions/addslashes // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: Ates Goral (http://magnetiq.com)
// + improved by: marrtins
// + improved by: Nate
// + improved by: Onno Marsman // + input by: Denny Wardhana
// + improved by: Brett Zamir (http://brett-zamir.me)
// + improved by: Oskar Larsson Högfeldt (http://oskar-lh.name/)
// * example 1: addslashes("kevin's birthday");
// * returns 1: 'kevin\'s birthday'
return (str+'').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}

Déjà si tu veux addslashé.

Ensuite, si tu déportais les events comme tout le monde te dit depuis des mois, tu n'aurais jamais eu ce problème.
Code PHP :
<?php 
var infobulle = document.getElementById('infobulle');
infobulle.onmouseover = function(){ ... };

Et enfin, pour quoi ne pas mettre des guillemets simple pour l'event, et double pour la fonction ? Au lieu de toujours gardes des guillemets double pour l'attribut ?!
Code PHP :
<?php 
<div onmouseover='info_bulle("${node.properties.title}")'>



RE: problème d'apostrophe - Argorate - 26-05-2010

Hello Smile

Alors... pour la fonction de remplacement : ça n'a jamais été le problème, celle que tu me donnes n'aurait pas fonctionner non plus car c'était le passage de la chaine en amont qui posait problème.

Pour ce qui est de gérer des événement comme tu le décris, j'avoue que je ne fais jamais comme ça et que je trouve pas ça très naturel. je préfère trouver les évènement à l'endroit où ils s'appliquent: sur les éléments. Mais bon, tu vas encore me dire que c'est pas bien tout ça :p

Sinon pour ce qui est de l'échange des ' et ", c'est une bonne idée mais en l'occurrence ça n'aurait était que reporté le problème. Il faut que l'utilisateur puisse mettre des apostrophes comme des guillemets, donc ça n'aurait pas réglés le truc^^

Merci a toi.


RE: problème d'apostrophe - Anthor - 26-05-2010

Ben déjà, je comprend pas vraiment d'où tu sors cette notation ${node.properties.title} ?

Citation :Alors... pour la fonction de remplacement : ça n'a jamais été le problème, celle que tu me donnes n'aurait pas fonctionner non plus car c'était le passage de la chaine en amont qui posait problème.
D'où l'intérêt quand on pose une question de ne pas mettre une seule ligne de code, mais bien quelque chose de fonctionnel !

Citation :Sinon pour ce qui est de l'échange des ' et ", c'est une bonne idée mais en l'occurrence ça n'aurait était que reporté le problème. Il faut que l'utilisateur puisse mettre des apostrophes comme des guillemets, donc ça n'aurait pas réglés le truc34
Un utilisateur qui remplit des infobulles JS ?

Citation :Pour ce qui est de gérer des événement comme tu le décris, j'avoue que je ne fais jamais comme ça et que je trouve pas ça très naturel. je préfère trouver les évènement à l'endroit où ils s'appliquent: sur les éléments. Mais bon, tu vas encore me dire que c'est pas bien tout ça 10
Ben je pourrais difficilement te dire que c'est bien !


RE: problème d'apostrophe - Argorate - 26-05-2010

J'utilise une librairie qui était là quand j'ai repris le code... (dojo) donc j'ai fais avec les notations que j'avais Wink

Et les info bulles affichent les nom des fichiers (donc indirectement, oui les utilisateurs remplisse les info-bulle puisque j'affiche le nom dedans).

En tout cas je vois pas en quoi c'est "mal" :p