Pregunta

Quiero usar algo como:

<body onLoad="init('A sentence with "quoted text" as parameter')">

Desafortunadamente, esto funciona, ya que las comillas del parámetro no se tratan adecuadamente.

Escapar de las comillas tampoco funciona

<body onLoad="init('A sentence with \"quoted text\" as parameter')">

(Lo anterior tampoco funciona).

¿Cómo trato con esto?Pensé que tal vez podría crear una variable de cadena y asignarle mi oración (entre comillas).¡Pero no sé cómo hacerlo!La carga del cuerpo es HTML y las variables de Javascript serían visibles solo dentro del alcance del script, ¿verdad?Para ser precisos, lo siguiente no funciona:

<script language="JavaScript">
var dada='A sentence with \"quoted text\" as parameter';
</script>
<body onLoad="init($dada, '</a>')">
¿Fue útil?

Solución

Usted tendría que usar entidades HTML para hacer que funcione:

<body onLoad="init('A sentence with &quot;quoted text&quot; as parameter')">

de la manera más limpia mucho, sin embargo, sería asignar el valor en una parte separada <SCRIPT> en la cabeza del documento.

...
<script>
body.onload = function() { init('A sentence with "quoted text" as parameter'); }
</script>
<body>
...

caso onload tiene la desventaja general de que sólo se activa cuando el documento y todos sus activos (imágenes, hojas de estilo, ...) se han cargado. Aquí es donde el evento onDOMLoad entra en juego: Se dispara cuando la estructura del núcleo HTML está listo, y se vuelven todos los elementos. No está soportado de manera uniforme en todos los navegadores, sin embargo, por lo que todos los marcos tienen su propia implementación de la misma.

La versión de jQuery se llama .ready().

Otros consejos

En lugar de inlining el método onLoad, ¿por qué no se establece mediante programación. A continuación, puede utilizar el poder de cierres para obtener los datos en la función.

<script type="text/javascript">
var data = "some data";
document.body.onload = function()
{
    alert(data);
}
</script>

no es la mejor manera

onload='init("A sentence with \"quoted text\" as parameter")'

Por cierto, yo estaba cometiendo un error tonto.

<script language="JavaScript"> 
var dada='A sentence with \"quoted text\" as parameter'; </script> 
<body onLoad="init(dada, '</a>')"> 

Esto funciona también. Yo estaba usando en lugar de $ dada dada en el llamado proceso de carga.

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