Comillas dentro de comillas dentro de comillas en javascript

 

Y ahí estaba yo, utilizando mootools para la carga asincrónica, necesitaba que una parte de la pantalla principal no sólo se actualizara automáticamente, sino que creara (también automáticamente) los elementos que la conforman, y que a su vez generara el código que se usaría al darle click y cargara el controlador que a su vez cargaría la vista necesaria.

Por lo que utilicé el muy conocido

$('elemento').set('html', 'CODIGO');

Dentro de donde va el código generaba el código html que a su vez tenía un onClick que mandaba a llamar a una función javascript pasándole varios parámetros, uno de ellos una cadena.

Por lo que para poner las cosas en terminos sencillos (ya que todo este código se genera en una biblioteca llamada por un controlador y cargada por una vista) quedaría de la sig manera.

//COMO QUEDARÍA LA PARTE PHP EN TÉRMINOS SENCILLOS
$code = <<<EOD
<input type="button" onClick="jsAccion(0, 1, 2, 'cadena')">
EOD;

Aquí vemos que la parte de la cadena va cerrada entre comillas simples para que no interfiera con las comillas dobles y hasta aquí todo bien, el problema es el siguiente:

//PARTE JAVASCRIPT EN TÉRMINOS SENCILLOS
$('elemento').set('html', '<?php echo $code?>');
Lo que me arrojaba un error puesto que según javascript primero cargo comilla simple, dentro (en la variable de php) se encuentra comillas dobles y de nuevo comillas simple, por lo cual hay problema entre las 2.
Leí un buen blog (http://blog.opensourceopportunities.com/2007/10/nested-nested-quotes.html) e intenté colocar “, ‘, \”, \’  y todos mis esfuerzos fueron en vano.
(NOTA: en firefox si ejecutaba el try catch en javascript, mientras que en chromium 12 no)
Hasta que leyendo los comentarios vi que alguien utilizó &quot, lo intenté y tampoco, así que se me ocurrió usar sólo &quot y ¡listo! Funcionó a la perfección.
$code = <<<EOD
<input type="button" onClick="jsAccion(0, 1, 2, &quote;cadena&quote;)">
EOD;

Con esto se puede tener ” ‘ ”  ” ‘ “, es decir comillas dentro de comillas dentro de comillas.

Author: angelinux

Desarrollador de páginas web desde el año 2000 y con experiencia en programación de sistemas para empresas desde el 2008; cofundador de CONSoluciones; autor del blog de software libre “Angelinux-slack”; docente en maestría en UPAV y fundador de la distribución Linux Falco que está en desarrollo para la Universidad Veracruzana.
Además, ponente, organizador de congreso, laborista social, impartidor de cursos de programación y servidores Linux, webmaster, y ex invitado en programa de televisión.

Deja un comentario