7

検査しようとしている<input type="hidden" name="Foo" value="123 />ページには、Javascript/AJAX が値を変更するページに非表示の要素があります。私は、この値を時々変更するコードがJavascriptのどこにあるのかを見つけようとしています。

その要素を使用/変更するJavaScriptの場所を見つけるのに役立つツールはありますか? Firebug はこれを提供していますか?

注: コードで「Foo」を探してみましたが、一致するタイトルが見つかりませんでした。JSON と Mootools がロードされ、+アプリケーション固有のコードがあり、数千行のコードが生成されます。要素が間接的にアクセスされている可能性があります。

4

3 に答える 3

8

Firebug 1.5では、HTMLパネルに「Break-on-Modify」が表示されます。http://getfirebug.com/doc/breakpoints/demo.html#html-Break on DOM(HTML)MutationEventsを参照してください。

于 2009-10-28T19:36:46.800 に答える
1

JavaScript がこの値を変更していることをどうやって知ることができますか? いつ呼び出されたかはすでにわかっているように見えるので (変更されることがわかっているため)、変更を開始する最初のイベント (おそらく他の要素の onclick 属性) に Firebug のブレークポイントを設定することをお勧めします。

javascript のどこで Foo の値が変更されているかを知る「一般的な」方法を伝えるのは難しいです。さまざまなアプローチ、さまざまなライブラリ、それぞれに構文があるためです。

たとえば、「Foo」を検索して見つからなかった場合、スクリプトは DOM を走査し、入力の値を「何かの最初の子」として変更している可能性があります。入力の親要素の名前または ID を検索して、そこからコードを理解しようとします。

私は通常、Firebug のデバッグ手法で使用するすべてのスクリプトの JavaScript ロジックを理解しようとしますが、ライブラリを使用するスクリプトについてだけです。

于 2009-10-26T02:28:44.150 に答える
0

Firebugで値の設定時にブレークポイントを定義できない場合は、次のようなものをページに挿入できます(Firefoxのみ)。

$("textarea")[0].__defineSetter__("value", function(val) {
   alert("called");
})

そして、Firebugの関数のブレークポイントかconsole.log、スタックをFirebugコンソールにダンプするために使用するか何かを使用します。

サポートされるさまざまな種類のブレークポイントに関するセクションを含むFirebug計画に関するプレゼンテーションをどこかで見たのを覚えていますが、現在、それへのリンクを見つけることができません。


[編集]上記は、valueプロパティに割り当てることによって値が設定される場合です.value = ...属性が変更された瞬間をキャッチする必要がある場合( .setAttribute("value", ...))、DOMミューテーションリスナーを使用できます。

于 2009-10-27T08:58:30.797 に答える