<html>
<head>
<script language="javascript">
function A(texto_escapado) {
var divContenido=document.getElementById("contenido");
divContenido.innerHTML = "<a href=\"javascript:B(\'" + texto_escapado +"\');\">clic aca!</a>";
alert(texto_escapado);
}
function B(texto_escapado) {
alert(texto_escapado);
}
</script>
</head>
<body>
<p><a href="javascript:A('\'Esto está escapado\'');">Paso 1</a></p>
<div id="contenido">...</div>
</body>
</html>
El problema que se genera es que a la hora de usar el texto para incluirlo en una concatenación, el texto escapado se pierde y se usa el carácter causando el siguiente
problema:
'Missing ) after argument list'
La solución que encontré es usar la función "replace" de una forma que parece muy particular:
texto_escapado = texto_escapado.replace(/\'/g, '\\\'');
Las dos primeras barras inclinadas ("slashes") son para escapar la primera barra en el texto y la última barra inclinada con la comilla es para escapar la comilla.
(\\="\") + (\'=') = \'
<html>
<head>
<script language="javascript">
function A(texto_escapado) {
var divContenido=document.getElementById("contenido");
alert(texto_escapado);
texto_escapado=texto_escapado.replace(/\'/g, '\\\'');
divContenido.innerHTML = "<a href=\"javascript:B(\'" + texto_escapado +"\');\">clic aca!</a>";
}
function B(texto_escapado) {
alert(texto_escapado);
}
</script>
</head>
<body>
<p><a href="javascript:A('\'Esto está escapado\'');">Paso 1</a></p>
<div id="contenido">...</div>
</body>
</html>
No hay comentarios:
Publicar un comentario