Je dois échapper aux guillemets simples dans les paramètres des fonctions JavaScript pour éviter cela :
onclick="Javascript:INSERT_PRODUCT('188267','WILL AND GRACE','32311','L'ANNIVERSARIO DINOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5 ',this);"
Mais j'ai besoin de les échapper à l'intérieur d'un appel de fonction puisque je ne connais pas les valeurs qui seront passées (variables de la base de données que je ne peux pas échapper à la base de données).
Existe-t-il une fonction qui me permette de faire quelque chose comme ce qui suit ?
onclick="Javascript:function(escape(param1), escape(param2), escape(param3));"
3 votes
'
=\'
(Comme vous le feriez pour une chaîne normale). Et comme vous l'insérez dans le balisage, il faut soit vous doit l'échapper, ou si un langage côté serveur le génère, assurez-vous que il y échappe.0 votes
Vous pouvez mettre vos paramètres à l'intérieur
escape(param)
4 votes
L'étiquette
Javascript:
n'est pas nécessaire à cet endroit. Vous devez utiliser d'autres moyens pour lier les gestionnaires d'événements : quirksmode.org/js/introevents.html alors vous n'avez pas à vous soucier des devis.0 votes
@EmmanuelN :
escape
L'url l'échappe, mais ne traduit pas les guillemets.0 votes
@DanieleDiPunzio : Pour une réponse définitive, pouvez-vous montrer comment vous générez le balisage ? Est-ce que c'est du PHP, de l'ASP, etc. généré, ou est-ce que vous codez en dur la liaison onclick vous-même ? (Si vous le codez en dur, vous devrez juste être conscient de remplacer les guillemets - rien ne le fera pour vous).
0 votes
J'ai essayé d'utiliser escape(param) mais le résultat est myfunction('', '', '') et ainsi de suite...
0 votes
Malheureusement, j'utilise un logiciel interne développé par ma société. Ce produit génère du code vb.net et html avec des choses codées en dur. Je ne peux définir qu'une fonction onclick pour mon bouton, c'est pourquoi je dois échapper aux guillemets simples dans l'appel de fonction.
2 votes
Examinez l'échappement des attributs HTML : stackoverflow.com/questions/4015345/