É possível depurar o JavaScript de carregamento dinâmico por algum depurador como o WebKit, o FireBug ou o IE8 Developer Tool?

Deminha recente pergunta, Eu já criei algumas funções JavaScript para visualização parcial de carregamento dinâmico. Portanto, não posso depurar nenhum JavaScript de carregamento dinâmico. Porque todo o JavaScript carregado será avaliado pela função "eval".

No entanto, encontrei uma maneira de criar um novo JavaScript usando o script a seguir para criar dinamicamente o script no cabeçalho do documento atual. Todos os scripts carregados serão exibidos no HTML DOM (que você pode usar qualquer depurador para encontrá-lo).

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

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

A propósito, a maioria dos depuradores (IE8 Developer Toolbar, Firebug e Google Chrome) não pode definir o ponto de interrupção em nenhum script dinâmico. Porque o script debuggable deve ser carregado na primeira vez após o carregamento da página.

Você tem idéia de depuração em conteúdo ou arquivo de script dinâmico?

Atualização 1 - Adicionar código fonte para teste

Você pode usar o seguinte arquivo xhtml para tentar depurar someVariable valor.

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

Da resposta, eu apenas testei no FireBug. O resultado deve ser exibido como abaixo das imagens.

texto alternativo http://d7cgnq.bay.livefilestore.com/y1pJGV27qEARXzZhsMMhPD5z0OxAtnkQK8eKeEXMAxuHjsuWeAq1aGl7sTISRNqVv3lw8ghyxE_GorlwSJDvTql0m0ugSGXPaY-/undebugable-firebug-html.PNG

Por favor, veja o script "dynamicLoadingScript" que é adicionado após o carregamento da página.

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

Mas isso não foi encontrado na aba do script do FireBug

Atualização 2 - Criar ponto de interrupção de depuração no script de carregamento dinâmico

texto alternativo http://d7cgnq.bay.livefilestore.com/y1peKdIMOztXss-pc8PlJEmaGov_0ShYnLsuDdK5OLETbCG0UpkX6Te29w0YW2pNKaD_0ANAiizh2GdGPAAp_1q0JWAETo4Qoiw/Debugger-VS2010.png

texto alternativo http://d7cgnq.bay.livefilestore.com/y1pUeHaHoTXj0WBl74fnTrXwdr_y7s7h8jNKfslSONgshzZBpUddGHNBWA9cXRabo3HAl3QazeozrCABo7pNVQc1Acl-UXXbHFE/Debugger-GoogleChrome.png

Ambas as imagens acima mostram a inserção de "depurador"; A instrução em alguma linha de script pode disparar o ponto de interrupção no script de carregamento dinâmico. No entanto, ambos os depuradores não mostram nenhum código no ponto de interrupção. Portanto, é inútil fazer isso.

Obrigado,

questionAnswers(12)

yourAnswerToTheQuestion