Question

Je ne parviens pas à échapper les guillemets simples et doubles dans la fonction JavaScript de href .

J'ai ce code JavaScript dans href . C'est comme -

<a href = "javascript:myFunc("fileDir/fileName.doc", true)"> click this </a>

Maintenant, comme les guillemets doubles entre guillemets doubles ne sont pas valides, je dois échapper aux guillemets intérieurs pour que ceux-ci soient traités comme faisant partie de la chaîne - alors, je dois le faire -

<a href = "javascript:myFunc(\"fileDir/fileName.doc\" , true)"> click this </a>

Le problème est que même le code ci-dessus ne fonctionne pas. Le code JavaScript est tronqué à - myFunc (

J'ai aussi essayé avec la variante guillemet simple - mais même cela ne semble pas fonctionner (ce qui signifie que si j'ai un seul guillemet dans mon littéral chaîne, le code est tronqué).

Voici ce que j'ai fait avec une seule citation:

<a href = 'javascript:myFunc("fileDir/fileName.doc" , true)'> click this </a>

Cela fonctionne, mais si j'ai une seule citation à l'intérieur de la chaîne, le code est tronqué de la même manière que celui des guillemets doubles.

Était-ce utile?

La solution

L’utilisation de barres obliques inverses pour échapper des guillemets explique comment cela fonctionne en JavaScript, mais vous n’écrivez pas réellement de code JavaScript: vous écrivez en HTML. Vous pouvez le faire en utilisant la méthode d'échappement HTML: entités de caractères.

&quot;  // "
&#39;   // '

Par exemple:

<a href="javascript: alert('John O&#39;Brien says &quot;Hi!&quot');">...</a>

Autres conseils

En règle générale, utilisez des guillemets doubles en HTML et des guillemets simples en JavaScript. Cela résoudra la plupart de vos problèmes. Si vous avez besoin d’une simple citation dans une chaîne JavaScript, vous pouvez simplement l’échapper en utilisant \ '- et vous ne devriez probablement pas imbriquer de chaînes littérales plus profondes que cela.

Comme indiqué précédemment, les entités HTML sont une possibilité si le code est incorporé au format HTML. Toutefois, vous devrez toujours gérer les guillemets dans les chaînes de vos fichiers sources JavaScript. Il est donc préférable de disposer d’une stratégie cohérente pour gérer JavaScript.

Si vous suivez cette stratégie et que vous obtenez un guillemet double intégré à votre code JavaScript intégré à votre code HTML, utilisez simplement l'entité HTML & amp; quot;..

Au cas où quelqu'un aurait besoin d'échapper à quelque chose comme ceci:

<a href="www.google.com/search?q="how+to+escape+quotes+in+href""</a>

Vous pouvez utiliser le code ASCII pour les guillemets % 22 :

<a href="www.google.com/search?q=%22how+to+escape+quotes+in+href%22"</a>

Cela est particulièrement utile si vous transmettez le lien vers JavaScript depuis PHP

Normalement, ce genre de code fonctionne sans problème:

<a href="#" onclick="myFunc('...')">Click this</a>

Avec ce code, avez-vous un problème?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top