Tengo una herramienta, similar en formas a JSFiddle, que me permite escribir dinámicamente javascript y ejecutarlo en una página. El código puede ser líneas múltiples, y típicamente lo será.cargar código dinámicamente y obtener el número de línea del error de análisis
Desafortunadamente, si hay una excepción en el código que escribo, no puedo obtener el número de línea de la excepción si uso eval() para ejecutar el código.
he encontrado una solución parcial, que es en lugar de utilizar
try{
eval(code);
}
catch(e) {
processException(e);
}
a su lugar hacer algo como esto:
var s = document.createElement('script');
s.appendChild(document.createTextNode(
"try{\n" +
code +
"}catch(e){processException(e)}"));
document.body.appendChild(s);
Ahora, si el código se produce una excepción, y miro a la stack trace (en mi función processException()) Puedo obtener un número de línea de la excepción (en firefox y chrome, de todos modos).
Eso está muy bien si realmente es una excepción de tiempo de ejecución, como una variable no definida. El problema es si hay un error de análisis/sintaxis, como parens no coincidentes o similares. No consigo nada.
¿Hay alguna solución loca para esto, que funcione en Firefox y Chrome, como mínimo? ¿Evaluar dentro de eval dentro de la etiqueta de script dentro del objeto Function? Estoy intentando todo y no he encontrado nada que funcione.
Este es un principio muy útil. Gracias. – SystemParadox