IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Appel de fonction JS avec un paramètre chaine de caractères


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 157
    Par défaut Appel de fonction JS avec un paramètre chaine de caractères
    Bonjour,

    Je me prends la tête sur un problème à priori simple, mais que je ne parviens pas à résoudre par moi-même.

    Je dois générer, via un echo PHP, le code HTML suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onClick="ma_fonction(ma_variable_js)">...</a>
    ma_variable_js serait déclarée comme suit dans le HEAD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
    var ma_variable_js = '<img src="bigbaby.jpg" width="1075" height="717" border="0" alt="">'
    </script>
    Tout mon problème vient du fait que je ne souhaite pas déclarer ma variable dans le HEAD, aussi mon appel de fonction deviendra :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onClick="ma_fonction('<img src="bigbaby.jpg" width="1075" height="717" border="0" alt="">')">...</a>
    Sauf que, du coup, le guillemet de src="bigbaby.jpg" va fermer celui du onClick.
    Quoi que j'essaie, je ne parviens pas à produire mon code html/javascript correct.

    Pourriez-vous me venir en aide, s'il vous plait ?

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    pratiquement, on ne passe jamais en paramètre un morceau de html;

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Pourquoi ne pas échapper les guillemets ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="#" onClick="ma_fonction('<img src=\"bigbaby.jpg\" width=\"1075\" height=\"717\" border=\"0\" alt=\"\">')">...</a>

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 157
    Par défaut
    Bonjour,

    Une fois les guillemets échappés j'obtiens bien le code désiré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onClick="ma_fonction('<img src="bigbaby.jpg" width="1075" height="717" border="0" alt="">')">...</a>
    Toutefois le guillemet ouvrant du onClick sera fermé par le guillemet ouvrant du src.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Vous ne les avez pas échappés :

    Echapper un guillemet, c'est transformer " en \" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="#" onClick="ma_fonction('<img src=\"bigbaby.jpg\" width=\"1075\" height=\"717\" border=\"0\" alt=\"\">')">...</a>

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 157
    Par défaut
    En effet, ce qui me donne le code du message précédant.

  7. #7
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Moi dans ce cas, je fais un URLEncode (escape en JavaScript) de ma chaine et j'écris "return maFunction(unescape('chaineUrlEncodée'));"

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Citation Envoyé par Nyphel Voir le message
    En effet, ce qui me donne le code du message précédant.
    Quoi ?

    Si vous les avez echappes, il ne devrait pas y avoir d'erreurs...

  9. #9
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Citation Envoyé par sachav Voir le message
    Quoi ?

    Si vous les avez echappes, il ne devrait pas y avoir d'erreurs...
    Je ne crois pas que le XML tienne compte de ca...

    Et à mon avis les navigateurs ne retransforment pas en les &quot; en " dans les évents JS

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 89
    Par défaut
    Bonjour,

    Comme la ligne est dans un echo en PHP, il faut l'échapper 2 fois ! (une fois pour le traitement PHP, une fois pour le Javascript)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo '<a href="#" onClick="ma_fonction(\'<img src=\\\"bigbaby.jpg\\\" width=\\\"1075\\\" height=\\\"717\\\" border=\\\"0\\\" alt=\\\"\\\">\')">...</a>';

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Citation Envoyé par JulienC Voir le message
    Bonjour,

    Comme la ligne est dans un echo en PHP, il faut l'échapper 2 fois ! (une fois pour le traitement PHP, une fois pour le Javascript)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo '<a href="#" onClick="ma_fonction(\'<img src=\\\"bigbaby.jpg\\\" width=\\\"1075\\\" height=\\\"717\\\" border=\\\"0\\\" alt=\\\"\\\">\')">...</a>';
    Ah oui, c'est vrai...
    Deux fois, c'est pas plutot comme ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="#" onClick="ma_fonction(\'<img src=\\"bigbaby.jpg\\" width=\\"1075\\" height=\\"717\\" border=\\"0\\" alt=\\"\\">\')">...</a>';

Discussions similaires

  1. DoFieldExchange : appel d'une fonction oracle avec un paramètre
    Par crabicounet dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 10/12/2008, 10h45
  2. Réponses: 1
    Dernier message: 25/07/2007, 10h03
  3. Réponses: 13
    Dernier message: 01/10/2006, 15h52
  4. Fonction 'failed' avec comme paramètre un HResult
    Par Leobaillard dans le forum Delphi
    Réponses: 1
    Dernier message: 08/08/2006, 20h29
  5. Réponses: 5
    Dernier message: 28/04/2006, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo