Pregunta

Tengo problemas para evitar las comillas simples y dobles dentro de la función JavaScript de href .

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

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

Ahora, ya que las comillas dobles dentro de comillas dobles no son válidas, necesito evitar las comillas dobles internas para que se trate como parte de la cadena - así que 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 de JavaScript se está truncando en - myFunc(

También probé con la variación de comillas simples, pero incluso eso no parece funcionar (lo que significa que si tengo una comilla dentro de mi cadena literal, el código se trunca).

Esto es lo que hice con una sola cita:

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

Esto funciona, pero si tengo una comilla simple dentro de la cadena, el código se trunca de la misma manera que la comillas dobles.

¿Fue útil?

Solución

El uso de barras diagonales inversas para evitar las comillas es cómo funciona en JavaScript, pero en realidad no estás escribiendo el código JavaScript allí: estás 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>

Otros consejos

Como práctica general recomendada, use 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 escapar usando \ ', y probablemente no debería anidar cadenas literales más profundas que eso.

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

Si estás siguiendo esta estrategia y terminas con una cita doble incrustada en tu JavaScript incrustado en tu HTML, solo usa la entidad HTML & amp; quot ;.

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

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

Puede usar 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 pasas el enlace a JavaScript desde PHP

Normalmente, este tipo de código funciona sin problemas:

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top