tipos funciones ejemplos concatenar comillas javascript html javascript-events escaping

funciones - Escapar comillas dobles en el controlador de eventos onClick de JavaScript



onclick jquery ejemplos (5)

El siguiente bloque de código simple puede publicarse en una página HTML estática, pero genera un error de JavaScript. ¿Cómo se debe evitar la comilla doble incrustada en el controlador onClick (es decir, / "xyz)? Tenga en cuenta que el HTML se genera dinámicamente extrayendo datos de una base de datos, cuyos datos son fragmentos de otro código HTML que podría tener uno o dos Parece que agregar una sola barra invertida delante del carácter de comillas dobles no funciona.

<script type="text/javascript"> function parse(a, b, c) { alert(c); } </script> <a href="#x" onclick="parse(''#'', false, ''<a href=/"xyz''); return false">Test</a>


Creo que el mejor enfoque es asignar el controlador onclick unobtrusively .

Algo como esto:

window.onload = function(){ var myLink = document.getElementsById(''myLinkId''); myLink.onclick = function(){ parse(''#'', false, ''<a href="xyz''); return false; } } //... <a href="#" id="myLink">Test</a>


Has probado

&quot; o /x22

en lugar de

/"

?


Necesita ser escapado en HTML, no Javascript-escapado. Cambiar /" a &quot;


Si bien estoy de acuerdo con CMS en hacer esto de una manera discreta (a través de una lib como jquery o dojo), esto es lo que también funciona:

<script type="text/javascript"> function parse(a, b, c) { alert(c); } </script> <a href="#x" onclick="parse(''#'', false, ''xyc&quot;foo'');return false;">Test</a>

La razón por la que barfs no es por JavaScript, es por el analizador de HTML. No tiene ningún concepto de las comillas escapadas que se desplazan a lo largo de la búsqueda de la cotización final y la encuentra y la devuelve como la función onclick. Esto es javascript no válido, por lo que no encontrará el error hasta que JavaScript intente ejecutar la función.


También es posible que desee probar dos barras diagonales inversas (//") para escapar del carácter de escape.