Domanda

Sto riscontrando problemi con l'escape delle virgolette singole e doppie all'interno della funzione JavaScript di href .

Ho questo codice JavaScript all'interno di href . È come -

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

Ora, poiché le doppie virgolette all'interno delle doppie virgolette non sono valide, ho bisogno di sfuggire alle doppie virgolette interne per essere trattato come parte della stringa quindi, devo farlo -

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

Il problema è che anche il codice sopra non funziona. Il codice JavaScript viene troncato in - myFunc(

Ho provato anche con la singola virgoletta - ma anche questo non sembra funzionare (nel senso che se ho una sola virgoletta all'interno della mia stringa letterale, il codice viene troncato).

Questo è quello che ho fatto con una sola citazione:

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

Funziona, ma se ho una virgoletta all'interno della stringa, il codice viene troncato come quello delle virgolette doppie.

È stato utile?

Soluzione

L'uso di barre rovesciate per sfuggire alle virgolette è come funziona in JavaScript, ma in realtà non stai scrivendo codice JavaScript lì: stai scrivendo HTML. Puoi farlo utilizzando il metodo di escape HTML: entità carattere.

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

Ad esempio:

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

Altri suggerimenti

Come best practice generale, usa virgolette doppie in HTML e virgolette singole in JavaScript. Ciò risolverà la maggior parte dei tuoi problemi. Se hai bisogno di una virgoletta singola in una stringa JavaScript, puoi semplicemente scappare usando \ '- e probabilmente non dovresti annidare stringhe letterali più profonde di così.

Come notato altrove, le entità HTML sono una possibilità se il codice è incorporato in HTML. Ma dovrai comunque gestire le citazioni di escape nelle stringhe nei tuoi file di origine JavaScript, quindi è meglio avere solo una strategia coerente per gestire JavaScript.

Se stai seguendo questa strategia e finisci con una doppia virgoletta incorporata nel tuo JavaScript incorporata nel tuo HTML, usa semplicemente l'entità HTML & amp; quot ;.

Nel caso in cui qualcuno debba sfuggire a qualcosa del genere:

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

Puoi usare il codice ASCII per le virgolette doppie % 22 :

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

È particolarmente utile se passi il link a JavaScript da PHP

Normalmente, questo tipo di codice funziona senza problemi:

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

Con questo codice, hai qualche problema?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top