Czy możliwe jest debugowanie dynamicznego ładowania JavaScript przez jakiś debugger, taki jak WebKit, FireBug lub IE8 Developer Tool?

Zmoje ostatnie pytanie, Stworzyłem już funkcję JavaScript do dynamicznego ładowania częściowego widoku. Więc nie mogę debugować żadnego dynamicznego ładowania JavaScript. Ponieważ wszystkie załadowane JavaScript będą oceniane przez funkcję „eval”.

Znalazłem jednak sposób na stworzenie nowego JavaScript przy użyciu następującego skryptu, aby dynamicznie tworzyć skrypt w nagłówku bieżącego dokumentu. Wszystkie załadowane skrypty zostaną wyświetlone w HTML DOM (możesz użyć dowolnego debugera, aby go znaleźć).

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

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

Przy okazji, większość debuggera (pasek narzędzi programistycznych IE8, Firebug i Google Chrome) nie może ustawić punktu przerwania w żadnym skrypcie dynamicznym. Ponieważ skrypt debuggujący musi zostać załadowany po raz pierwszy po załadowaniu strony.

Czy masz pomysł na debugowanie w dynamicznej zawartości skryptu lub pliku?

Aktualizacja 1 - Dodaj kod źródłowy do testowania

Możesz użyć następującego pliku xhtml do próby debugowania wartości someVariable.

<!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>

Od odpowiedzi po prostu testuję ją w FireBug. Wynik powinien być wyświetlany jak poniżej.

alt tekst http://d7cgnq.bay.livefilestore.com/y1pJGV27qEARXzZhsMMhPD5z0OxAtnkQK8eKeEXMAxuHjsuWeAq1aGl7sTISRNqVv3lw8ghyxE_GorlwSJDvTql0m0ugSGXPaY-/undebugable-firebug-html.PNG-/undebugable-firebug-html.PNG

Spójrz na skrypt „dynamicLoadingScript” dodawany po załadowaniu strony.

alt tekst http://d7cgnq.bay.livefilestore.com/y1pz_RwqjgeVqe2mAlUZha0PalpPdP0X5AiwJcQhYahERlnbPDdZpb-_d1e96Q-14raSDMJOBsdcV9jsi4B5yCUDqm41Wc3h0yk/undebugable-firebug-script.PNG

Ale nie znaleziono go w karcie skryptu FireBug

Aktualizacja 2 - Utwórz punkt przerwania debugowania w skrypcie dynamicznego ładowania

alt tekst http://d7cgnq.bay.livefilestore.com/y1peKdIMOztXss-pc8PlJEmaGov_0ShYnLsuDdK5OLETbCG0UpkX6Te29w0YW2pNKaD_0ANAiizh2GdGPAAp_1q0JWAETo4Qoiw/Debugger-VS2010.png

alt tekst http://d7cgnq.bay.livefilestore.com/y1pUeHaHoTXj0WBl74fnTrXwdr_y7s7h8jNKfslSONgshzZBpUddGHNBWA9cXRabo3HAl3QazeozrCABo7pNVQc1Acl-UXXbHFE/Debugger-GoogleChrome.png

Oba powyższe zdjęcia pokazują wstawianie „debuggera”; instrukcja w jakiejś linii skryptu może zwolnić punkt przerwania w skrypcie dynamicznego ładowania. Jednak oba debugery nie pokazują żadnego kodu w punkcie przerwania. Dlatego jest to bezużyteczne.

Dzięki,

questionAnswers(12)

yourAnswerToTheQuestion