javascript - pausado - firefox debugger not working
Fuentes comunes de literal de cadena sin terminaciĆ³n (19)
Esta pregunta ya tiene una respuesta aquí:
Estoy intentando depurar un script de JavaScript que se lee en una extensión de Firefox y se ejecuta. Solo puedo ver los errores a través de la consola Firebug (mi código es invisible para Firebug) y se informa un "literal de cadena sin terminación".
Revisé la línea y las líneas a su alrededor y todo parece estar bien: los paréntesis, los corchetes y las comillas están equilibrados, etc. ¿Cuáles son otras posibles causas que debería buscar?
$ str = str_replace (array ("/ r / n", "/ n / r", "/ r", "/ n"), ''
'', stripslashes ($ str));
Esto debería funcionar.
¡Busca saltos de línea! Esas son a menudo la causa.
¿Has escapado tus barras diagonales (/)? He tenido problemas con aquellos antes
¿Has probado Chromebug ? Es el Firebug para extensiones.
Acabo de descubrir que "<//script>"
parece funcionar tan bien como "</scr"+"ipt>"
.
Además, tenga en cuenta que% 0A es el URL de carácter de salto de línea codificado. Me tomó un tiempo encontrar dónde había un salto de línea en mi código ofensivo.
Busque una cadena que contenga un solo qoute sin guardar que puede ser insertado por algún código del lado del servidor.
El desarrollador de la página web adivinó qué codificación utiliza el navegador del usuario. Esto generalmente se puede resolver especificando una codificación en el encabezado de la página.
El espacio en blanco es otro problema que encuentro, causa este error. Usar una función para recortar el espacio en blanco puede ayudar.
Escanee el código que viene antes de la línea # mencionada por mensaje de error. Lo que no se ha terminado ha resultado en que algo en sentido descendente, (la línea culpable #), sea marcado.
He tenido problemas con las comillas en ángulo en el pasado ('') por lo general desde copiar y pegar desde Word. Reemplazarlos con comillas simples regulares ('') hace el truco.
La mayoría de los navegadores parecen tener problemas con un código como este:
var foo = "</script>";
En Firefox, Opera e IE8 esto da como resultado un error literal de cadena sin terminar. Puede ser bastante desagradable al serializar código html que incluye scripts.
Prueba una "búsqueda binaria". Elimina la mitad del código y vuelve a intentarlo. Si el error sigue ahí, elimine la mitad del código restante. Si el error no está allí, coloque nuevamente lo que ha eliminado y elimine la mitad. Repetir.
Debería poder reducirlo a pocas líneas bastante rápido. Mi experiencia ha sido que en este punto, notarás una estúpida cadena malformada.
Puede ser conveniente realizar esto en una versión guardada de la salida HTML en el navegador, si no está seguro de en qué recurso del servidor está el error.
Puede intentar ejecutar el script a través de JSLint .
Si ha realizado un corte / pegado: algunos resaltadores de sintaxis en línea manipularán comillas simples y dobles, convirtiéndolas en pares de comillas formateadas (pares de apertura y cierre coincidentes). (Aunque no puedo encontrar ningún ejemplo en este momento) ... Eso implica golpear Comando + unas veces y mirar sus caracteres de cita
Pruebe con una fuente diferente? también, diferentes editores e IDE usan diferentes tokenizers y reglas de resaltado, y JS es uno de los lenguajes más dinámicos para analizar, así que intente abrir el archivo en emacs, vim, gedit (con complementos JS) ... Si tiene suerte, uno de ellos mostrarán una cadena larga de color púrpura corriendo por el final del archivo.
Si nada ayuda, busque algunos caracteres de código único como
/u2028
esto puede romper su cadena en más de una línea y arrojar este error
Solo escapa tus cierres de etiquetas o usa el código ASCII
es decir
<//script>
es decir
</script>
Tal vez es porque tienes un salto de línea en tu código PHP. Si necesita saltos de línea en su mensaje de ventana de alerta, inclúyalo como una sintaxis escapada al final de cada línea en su código PHP. Normalmente lo hago de la siguiente manera:
$message = ''line 1.//n'';
$message .= ''line 2.'';
Yo votaría por la respuesta de jamtoday si tuviera la "reputación"
Si sus datos provienen de PHP, esto podría ayudar
$str = str_replace(array("/r", "/n"), '''', $str);