2012-04-03 7 views
10

Se ho generato un po 'di Javascript nel mio codice Scala in questo modo:Impedire Scala di fuggire virgolette in XML inutilmente

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

ed il Javascript contiene un carattere doppio apice (come nell'esempio), apparirà come &quot; quando l'XML viene convertito in una stringa e Firefox rifiuterà questo Javascript come se avesse un errore di sintassi.

Come posso evitare questo errore Javascript, senza rimuovere &quot; s che sono effettivamente necessari?

Sto usando Play framework 1.2.4 con il modulo Scala 0.9.1, che richiede Scala 2.8.1.

+0

Non conosco Scala ma mi piacerebbe inserire il contenuto dello script in un blocco CDATA? – Pointy

+0

@Pointy No, purtroppo non fa differenza. –

+1

Vedere [questo biglietto] (https://issues.scala-lang.org/browse/SI-3368). –

risposta

15

sarebbe qualcosa come questo lavoro per voi?

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

Questo mi ha salvato da una brutta costruzione di corde. Grazie! –

0

Se chiami da un modello di gioco, si dovrebbe essere in grado di fare $ {myscript.raw()} piuttosto che solo $ {} myscript. Anche il tag # {verbatim /} dovrebbe funzionare.

+0

Ho paura che il modulo Scala usi un diverso linguaggio di template basato su Scala, che sto usando, quindi non posso usare questa risposta. –

+0

Ah, mio ​​male! Peccato che non includa qualche tipo di funzionalità non funzionante per JS. –