Ist es möglich, das dynamische Laden von JavaScript mit einem Debugger wie WebKit, FireBug oder IE8 Developer Tool zu debuggen?

Vonmeine letzte FrageIch habe bereits einige JavaScript-Funktionen für das dynamische Laden von Teilansichten erstellt. Daher kann ich kein dynamisches Laden von JavaScript debuggen. Weil das gesamte geladene JavaScript von der Funktion "eval" ausgewertet wird.

Ich habe jedoch eine Möglichkeit gefunden, neues JavaScript zu erstellen, indem ich das folgende Skript verwende, um dynamisch ein Skript im Header des aktuellen Dokuments zu erstellen. Alle geladenen Skripte werden in HTML DOM angezeigt (das können Sie mit jedem Debugger finden).

var script = document.createElement('script')
script.setAttribute("type","text/javascript")
script.text = "alert('Test!');";

document.getElementsByTagName('head')[0].appendChild(script);

Übrigens können die meisten Debugger (IE8 Developer Toolbar, Firebug und Google Chrome) in keinem dynamischen Skript Haltepunkte setzen. Weil debuggbares Skript beim ersten Laden nach dem Laden der Seite geladen werden muss.

Haben Sie eine Idee zum Debuggen in dynamischen Skriptinhalten oder -dateien?

Update 1 - Quellcode zum Testen hinzufügen

Sie können die folgende xhtml-Datei verwenden, um zu versuchen, einen variablen Wert zu debuggen.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>    
    <title>Dynamic Loading Script Testing</title>
    <script type="text/javascript">
    function page_load()
    {       
        var script = document.createElement('script')
        script.setAttribute("id", "dynamicLoadingScript");
        script.setAttribute("type","text/javascript");
        script.text =   "var someVariable = 0;\n" +
                        "someVariable = window.outerWidth;\n" +
                        "alert(someVariable);";

        document.getElementsByTagName('head')[0].appendChild(script);
    }
    </script>
</head>
<body onload="page_load();">
</body>
</html>

Nach der Antwort teste ich es einfach in FireBug. Das Ergebnis sollte wie unten abgebildet angezeigt werden.

alternativer Text

Sehen Sie sich das "dynamicLoadingScript" -Skript an, das nach dem Laden der Seite hinzugefügt wird.

alternativer Text

Es wird jedoch nicht in der Skriptregisterkarte von FireBug gefunden

Update 2 - Erstellen Sie einen Debug-Haltepunkt im dynamischen Ladeskript

alternativer Text

alt text

Beide obigen Bilder zeigen das Einfügen von "Debugger"; Die Anweisung in einer Skriptzeile kann einen Haltepunkt im dynamischen Ladeskript auslösen. Beide Debugger zeigen jedoch keinen Code am Haltepunkt an. Daher ist es sinnlos, dies zu tun.

Vielen Dank,

Antworten auf die Frage(12)

Ihre Antwort auf die Frage