2010-01-13 60 views
25

我正在一個網站上加載了傳統的javascript和jquery包含,並沒有文檔來顯示什麼時候發生。捕捉特定的JavaScript代碼正在執行onClick

我有一個特定的問題需要解決,並且我無法找到單擊按鈕時正在執行的相關代碼。爲了避免我通過數百行傳統腳本進行漫遊(以及理解),有沒有一種功能(可能在Firebug中)能夠識別當我單擊按鈕時正在執行的腳本?

感謝您的幫助。

+0

哇,10分鐘,4個完全不同的答案,所有這些都是很好的嘗試。去團隊。 :) – 2010-01-13 16:16:30

+0

可能的重複[如何調試與Firebug(或類似的工具)的JavaScript/jQuery事件綁定](http://stackoverflow.com/questions/570960/how-to-debug-javascript-jquery-event-bindings- with-firebug-or-similar-tool) – 2015-11-16 17:42:07

回答

17

我相信Firebug的控制檯窗口中有一項功能叫做Profile。點擊個人資料,點擊該按鈕,然後再次點擊個人資料。它應該給你所有功能在那個時候被調用。要警告的是,如果這段代碼包含jQuery,那麼你可能會得到一大串函數,因爲jQuery在其代碼中使用了噸。不幸的是,剖析器還會顯示匿名函數,這真的很痛苦。

否則,在按鈕的類或ID的代碼中進行搜索並通過它們。如果您的ID爲fancy,那麼您可以在代碼中搜索#fancy並嘗試找到它。至少可能導致你在一般方向。

+1

就是這樣 - 我正在尋找的東西 - 即使輸出相當長!非常感謝大家的幫助。 – Kevin 2010-01-13 16:29:17

+3

這真的是一個開發者的好地方 - 我非常感謝每個人的時間和技巧。 – Kevin 2010-01-13 16:32:20

0

在Firebug中,你可以在一些JS中設置一個斷點,然後你得到一個堆棧,它會讓你知道當前的函數調用堆棧。因此,如果你在幾個處理程序使用的函數中設置斷點,那麼你可以使用它來發現你正在處理的處理程序。

如果你正在處理AJAX回調等,這可能不會工作。

+0

應該注意堆棧功​​能在Firebug for Firefox 2(IIRC)中不可用。 – 2010-01-13 17:00:55

7

您可以單擊Firebug的「Break on next」按鈕(在「腳本」選項卡中;它看起來像暫停按鈕),然後按下要調試的按鈕。

下一次執行任何JavaScript代碼時,Firebug將進入調試器並向您顯示該行代碼。

+0

啊哈,所以這就是暫停按鈕的作用:D我必須記住,一個 – workmad3 2010-01-13 17:27:34

4

休息按鈕不適合我。相反,我沒有使用FireBug編輯onclick屬性,並在「調試器」前添加了它。 ...然後,一旦你點擊,你就會馬上分手:)

3

上述答案都不適用於我。我試圖使用Firebug來弄清楚一個頁面上的功能是如何爲我無法控制的網站工作的。這是對我有用的東西。

首先,得到了我從網頁的源文件點擊元素的ID,然後創建一個表(腳本標籤下)獲得一個臨時參考吧:

tmp=document.getElementById("idOfElement")

下一頁,我將當前的onclick值分配給另一個臨時變量。

oldfunc=tmp.onclick

接着,我定義了一個新的onclick功能。最初我嘗試將debugger;作爲第一個功能,但這不起作用!所以不是,我創建了一個警告:

tmp.onclick = function() { alert("Ok"); oldfunc() }

現在,我只要一按按鈕警報大作,在這一點上,我依次爲另一個列出的「打破下一步」按鈕回答這個問題。然後我解散警報,並立即在調試器中正確的位置。

在我的情況下,「下一次中斷」按鈕本身並不起作用,因爲還有很多其他事件,只是將鼠標懸停在頁面上導致斷點被擊中,使我無法點擊按鈕。

+0

非常聰明,的確! – pymarco 2014-05-13 22:57:32