Ich brauche eine vollständige Aufrufliste, wenn eine Ausnahme in JavaScript in Internet Explorer 8 auftritt. Funktionsaufrufe können zwischen Frames auftreten, deren Nummer groß ist.Full Callstack für mehrere Frames JS auf IE8
Aufrufstack erforderlich, um Protokolle an die Entwickler zu senden. Ich kann keinen Debugger verwenden, weil der Endbenutzer nicht mit diesem Problem umgehen muss.
Die aktuelle Lösung für JavaScripts vorausgesetzt, es kann Callstack (http://eriwen.com/javascript/js-stack-trace/) generieren. Es basiert auf arguments.callee.caller. Der Aufrufer gibt jedoch null (undefiniert) zurück, wenn die Funktion von außerhalb des aktuellen Rahmens aufgerufen wurde. Somit ist der erhaltene Callstack unvollständig.
Kann ich in diesem Fall den Namen eines Frames bekommen, von dem die Funktion aufgerufen wurde?
Lösung auf Basis Active Scripts Technologie gibt ein Objekt vom Typ Script: IHTMLDocument :: get_Script (IDispatch ** p)
Aber Gussobjekt "script" auf die Schnittstelle IActiveScript ausfällt.
* Kann ich aus IE8 den Link für einen bestimmten Kontext ScriptEngine erhalten, um die notwendigen Informationen zu extrahieren, um den Callstack zu konstruieren?
Ich hoffe, du bekommst eine gute Antwort und postest etwas in der Community, wir brauchen es! FYI, js-stack-trace wird auch eine fehlerhafte Stack-Trace geben, wenn eine der Funktionen im Stack mehr als einmal aufgerufen wird, weil "der Wert des Caller-Attributs eine Funktion ist, kein Stack-Frame, also der untere Teil des Stack-Trace wird fehlen, wenn eine Funktion rekursiv aufgerufen wird. " (http://blog.yourway.com/2009/07/3-painful-ways-to-obtain-stack-trace-in.html) – Hemlock
Danke, Hemlock. Weitere Erklärung für die Interaktion von Internet Explorer und Java Script Engine finden Sie hier: http://blogs.msdn.com/b/jaiprakash/archive/2007/01/22/jscript-exceptions-not-handled-thrown- across-frames-if-throw-from-a-expando-method.aspx aber das löst das Problem nicht :( – RostislavS
Vermeiden Cross-Frame-Kommunikation wäre die einfachste Lösung. – Raynos