2009-03-06 33 views
9

Tengo problemas para evitar las comillas simples o dobles dentro de la función JavaScript de href.Uso de comillas simples o dobles de JavaScript para href's

Tengo este código JavaScript dentro de href. Es como -

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

Ahora, ya comillas dobles dentro de comillas dobles no es válida, necesito escapar de las comillas dobles internos para que pueda ser tratado como parte de la cadena - así, necesito hacer esto -

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

El problema es que incluso el código anterior no funciona. El código JavaScript está truncado en - myFunc(

He intentado con la variación de comillas simples también - pero incluso eso no parece funcionar (lo que significa que si tengo una comilla simple dentro de la cadena literal, entonces el código se trunca))

Esto es lo que hice con una comilla simple:

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

Esto funciona, pero si tengo una comilla simple dentro de la cadena a continuación, el código se trunca en la misma forma que la de comillas dobles uno.

Respuesta

28

Usar barras diagonales inversas para escapar de las comillas es la forma en que funciona en JavaScript, pero en realidad no está escribiendo el código JavaScript allí: está escribiendo HTML. Puede hacerlo utilizando el método de escape HTML: entidades de caracteres.

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

Por ejemplo:

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

Creo que todavía necesita escapar ' ya que una vez que se analiza el html, el valor de la entidad se expandirá a 'como el otro simple pecado gle cotizaciones dentro del atributo. Debería estar 'alerta '(' John O \ ' Brien dice " ');' – JeremyWeir

-1

Normalmente, este tipo de código está trabajando sin problemas:

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

Con este código, ¿tiene algún problema?

+0

sí, dijo que su texto podría contener comillas (simples y dobles) – nickf

1

Como práctica recomendada general, utilice comillas dobles en HTML y comillas simples en JavaScript. Eso resolverá la mayoría de tus problemas. Si necesita una comilla simple en una cadena de JavaScript, puede simplemente escapar usando \ '- y probablemente no debería anidar cadenas literales más profundas que esa.

Como se señaló en otra parte, las entidades HTML son una posibilidad si el código está incrustado en HTML. Pero igual tendrá que lidiar con las comillas de escape en cadenas en los archivos fuente de JavaScript, por lo que es mejor tener una estrategia consistente para tratar con JavaScript.

Si está siguiendo esta estrategia y termina con una comilla doble incrustada en su JavaScript incrustado en su HTML, simplemente use la entidad HTML & quot ;.

0

En caso de que alguien tiene que escapar algo como esto:

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

Puede utilizar el código ASCII para comillas dobles %22:

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

Es especialmente útil si se pasa el enlace a JavaScript de PHP

Cuestiones relacionadas