Z mojego ostatniego pytania , stworzyłem już funkcję JavaScript do dynamicznego ładowania częściowego widoku. Nie mogę więc debugować żadnego dynamicznego ładowania JavaScript. Ponieważ cały załadowany JavaScript zostanie oceniony przez funkcję „eval”.
Jednak znalazłem sposób na utworzenie nowego JavaScript, używając następującego skryptu do dynamicznego tworzenia skryptu w nagłówku bieżącego dokumentu. Wszystkie załadowane skrypty zostaną wyświetlone w HTML DOM (możesz go znaleźć za pomocą dowolnego debuggera).
var script = document.createElement('script')
script.setAttribute("type","text/javascript")
script.text = "alert('Test!');";
document.getElementsByTagName('head')[0].appendChild(script);
Nawiasem mówiąc, większość debugerów (IE8 Developer Toolbar, Firebug i Google Chrome) nie może ustawić punktu przerwania w żadnym skrypcie dynamicznym. Ponieważ skrypt możliwy do debugowania 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>
Z odpowiedzi, po prostu testuję to w FireBug. Wynik powinien być wyświetlany jak na poniższych obrazkach.
Proszę spojrzeć na skrypt „dynamicLoadingScript”, który jest dodawany po załadowaniu strony.
Ale nie można go znaleźć na karcie skryptów w FireBug
Aktualizacja 2 - Utwórz punkt przerwania debugowania w skrypcie dynamicznego ładowania
Oba powyższe obrazy pokazują wstawianie „debuggera”; instrukcja w jakiejś linii skryptu może wywołać punkt przerwania w skrypcie dynamicznego ładowania. Jednak oba debugery nie wyświetlają żadnego kodu w punkcie przerwania. Dlatego jest to bezużyteczne.
Dzięki,