2009-05-17 10 views
4

FirebugのJSデバッガに表示されません(私は、ブラウザで開く):page2.htmlの動的にロードされたJS関数はpage1.htmlがあり

<div id="content"> 
</div> 
<script type="text/JavaScript"> 
    jQuery.ajax({ 
     type : "GET", 
     url : 'page2.html', 
     dataType : "html", 
     success : function(response) {   
      jQuery('#content').append(response); 

     } 
    }); 
</script> 

コード:

<script type="text/JavaScript" src="js/page2.js"></script> 

<script type="text/JavaScript"> 
test(); 
</script> 

コードページのjs/page2.js:

function test() { 
    alert('Function Test()'); 
} 

すべて機能し、ウィンドウ「機能テスト()」が表示されます。しかし問題は、firebug jsデバッガでfunction test()のコードに到達できないことです。イベントスクリプトや評価では表示されません。

どうすれば修正できますか?

FYI: 関数を別のjsファイルに入れて、page2.htmlに配置しないと、 がデバッガcorectlyに表示されます。

test()関数に "debugger"という単語を置くと、Firebugは停止しますが、関数のソースコードにはまだ到達できません。

バージョン:Firefoxの3.0.10、Firebugは1.3.3

更新:質問Making Firebug break inside dynamically loaded javascriptとしてほとんど同じですが、まだ返事

答えて

0

あなたはJS/page2.jsを変更するとどうなりますありません〜:

function test() { 
    alert('Function Test()'); 
} 
alert('loaded'); 

"読み込まれました"というメッセージが表示されますか?

+0

はい、もちろん、スクリプトの実行は正しく動作しますが、ファイアバグには正しくロードされません。 – braz

4

これはハックですが、外部ファイルjs/page2.jsに2回追加して起動するようになっています。一度ファイルの先頭に、もう一度機能の先頭に移動します。

デバッガの単語がどちらかの場所に1回だけ存在する場合、firebugは停止しません。

debugger; 
function test() { 
    debugger; 
    alert('Function Test()'); 
} 
+0

素敵なハックです。私はそれを試して、それは動作します。 +1 – ichiban

+0

はい、js/page2.js(メッセージで言及した)のどこに置いても、実際には "デバッガ"で停止しますが、まだソースコードを取得できません(ローカルウォーズを見て、ステップバイステップ移動など) – braz

+0

私は私のポストで言及したことを正確に行うことによって、デバッガの言葉を2回使用して、私はソースを突き抜けてローカルヴァルスを見ることができます。 –

0

試してみてください。

eval('debugger;'); 

それはきれいではありませんが、動作するようです。

+3

なぜ 'debugger;'だけではないのですか?静的な文字列を渡すと、 'eval'は不要です。 –

関連する問題