¿Hay alguna función auxiliar que escapará correctamente de una cadena que se representará como una comilla simple citada como literal de cadena de JavaScript?secuencia de escape de magento para javascript
sé de jsQuoteEscape pero sólo se encarga de cotizaciones y no trata \ n & \ r etc.
así que si mi cadena es 'línea 1 \ nlineb' (es decir, dos líneas con un salto de línea entre ellos)
y utilizo
var jsvar='<?php echo $this->helper('myextension')->jsQuoteEscape($mystring); ?>';
voy a entrar en el contenido representado
var jsvar='line1
line2';
que es un error de sintaxis.
Gracias, Eyal
Aunque, como he contestado en su propia Q, no parece una cadena de calificar como JSON tengo la sensación de que esto es un poco demasiado. (al menos en términos de sobrecarga en el lado de Javascript. Si te preocupa llamar json_encode con un objeto no, personalmente preferiría pasar la cadena como un solo miembro en una matriz y luego recortar del resultado cualquier cosa- e incluyendo el primer '[' y cualquier cosa desde y después del último ']'. Esto resulta con JS que es exactamente lo que quiere y nada más. Para ser práctico, dudo si algo (probablemente) tan ampliamente usado alguna vez se rompería. – epeleg
Dicho esto, ¿podría ir con 'Mage :: helper ('core') -> jsonEncode ($ string)' o con 'json_encode ($ string)'? Tiendo a elegir el segundo ya que es más corto por un lado y parece que tiene mucho menos sobrecarga por lo que el rendimiento wo ser mejor. (¿Asumo que el segundo es solo parte de PHP? ¿O no?). – epeleg
Probablemente tengas razón, aunque cada vez que me digo a mí mismo "Simplemente voy a escribir este sencillo reemplazo de cuerdas que seguramente no tendrá casos extremos inesperados", termino siendo mordido por los casos extremos. Debido a eso, he adquirido el hábito de pasar cualquier JS dinámico JS como json, como se indicó anteriormente. –