Necesito obtener una pila de llamadas completa cuando ocurre una excepción en JavaScript en Internet Explorer 8. Las llamadas de función pueden ocurrir entre tramas cuyo número es grande.Pila de llamadas completa para varias tramas JS en IE8
Pila de llamadas necesaria para enviar registros a los desarrolladores. No puedo usar un depurador, porque el usuario final no tiene que lidiar con este problema.
La solución actual para JavaScripts siempre que pueda generar callstack (http://eriwen.com/javascript/js-stack-trace/). Se basa en arguments.callee.caller. Pero el llamador devuelve cero (indefinido) si se llamó a la función desde fuera del cuadro actual. Por lo tanto, callstack obtenido es incompleto.
¿Puedo obtener el nombre de un marco desde el cual se llamó a la función en este caso?
solución basada en la tecnología de secuencias de comandos activas da un objeto de tipo ScriptEngine: IHTMLDocument :: get_Script (IDispatch ** p)
Pero el objeto de colado "guión" de la interfaz falla IActiveScript.
* ¿Puedo obtener de IE8 el enlace que se utilizará para un contexto determinado ScriptEngine, para extraer la información necesaria para construir el callstack?
Por supuesto, espero se obtiene una buena respuesta a esta y publicar algo a la comunidad, lo necesitamos! FYI, js-stack-trace también dará un rastro erróneo de la pila si alguna de las funciones de la pila se llama más de una vez porque "el valor del atributo de llamante es una función, no un marco de pila, por lo que la parte inferior del rastro de la pila faltará si alguna función se llama recursivamente ". (http://blog.yoursway.com/2009/07/3-painful-ways-to-obtain-stack-trace-in.html) – Hemlock
Gracias, Hemlock. Aquí se ofrece más explicación para la interacción de Internet Explorer y Java Script Engine: http://blogs.msdn.com/b/jaiprakash/archive/2007/01/22/jscript-exceptions-not-handled-thrown- across-frames-if-throwwn-from-a-expando-method.aspx pero esto no resuelve el problema :( – RostislavS
Evitar la comunicación entre fotogramas sería la solución más fácil. – Raynos