2012-04-03 12 views
10

Si genero algo de JavaScript en mi código Scala como esto:Prevenir Scala se escape comillas dobles en XML innecesariamente

<script type="text/javascript"> 
    foo("{bar}"); 
</script> 

y el Javascript contiene un carácter de comillas dobles (como en el ejemplo), que aparecerá como &quot; cuando el XML se convierte en una cadena, y Firefox rechazará este Javascript como que tiene un error de sintaxis.

¿Cómo puedo evitar este error Javascript, sin eliminar &quot; s que son realmente necesarios?

Estoy usando Play Framework 1.2.4 con el módulo Scala 0.9.1, que requiere Scala 2.8.1.

+0

No conozco a Scala, pero ¿sería útil poner el contenido del script en un bloque de CDATA? – Pointy

+0

@Pointy No, desafortunadamente no hace la diferencia. –

+1

Ver [este ticket] (https://issues.scala-lang.org/browse/SI-3368). –

Respuesta

15

¿Algo como esto funcionaría para usted?

scala> val bar=scala.xml.Unparsed(""""hello"""") 
bar: scala.xml.Unparsed = "hello" 

scala> val x = <script type="text/javascript">foo({bar});</script> 
x: scala.xml.Elem = <script type="text/javascript">foo("hello");</script> 
+0

Esto me salvó de la desagradable construcción de cuerdas. ¡Gracias! –

0

Si llama desde una plantilla de Juego, debe ser capaz de hacer $ {myscript.raw()} en lugar de sólo $ {} miscript. La etiqueta # {verbatim /} también debería funcionar.

+0

Me temo que el módulo Scala usa un lenguaje de plantillas diferente basado en Scala, que estoy usando, así que no puedo usar esta respuesta. –

+0

¡Ah, mi mal! Una pena que no incluya algún tipo de funcionalidad sin procesar para JS. –

Cuestiones relacionadas