2012-05-17 28 views
29

如何找出對象的onclick事件正在調用哪個javascript函數?更好的是,我可以找出哪些包含該函數所在的.js文件嗎?如何找出對象的onclick事件正在調用哪個javascript函數?

+0

要清楚,你有一個DOM對象,你想知道它做了什麼onclick?你嘗試過'someObject.onclick'或'someObject.getAttribute(「onclick」)'?你不知道它來自哪個文件,因爲JS代碼不知道它來自哪個文件。 – apsillers

+0

可能重複[如何檢查是否有任何JavaScript事件監聽器/處理程序附加到元素/文檔?](http://stackoverflow.com/questions/2382994/how-to-check-if-any-javascript-event- listeners-handlers-attached-to-an-element-d) –

+0

@Diodeus:這個問題是不同的 - 它是關於使用jQuery獲取綁定事件,而OP正在尋找一個瀏覽器devtool。 –

回答

2

你可以這樣做

用JavaScript Demo on JsFiddle

div1 = document.getElementById('div1'); 

alert(div1.getAttribute("onclick"));​ 

使用jQuery Demo on JsFiddle

<div id="div1" onclick="myfun();" >​ 

alert($('#div1').attr('onclick'))​; 
+4

我在任何地方都沒有看到jQuery標籤。 –

+1

修改我的答案我希望現在罰款 – Adil

+0

這將需要他胡說他的代碼警報()。糟糕的方式來調試JavaScript。 – Gjohn

0

我做到這一點使用此Visual Event腳本整齊地突出了事件是由哪些功能認購在哪些元素上。

要找到代碼的源代碼,只需使用FireBug或類似的瀏覽器開發工具來搜索函數名稱即可。

1

你將無法找到文件的onclick事件被調用,但myObject.onclick會給你被調用的功能。不,你不需要這個jQuery。

至於名稱的功能,這有點複雜。你可以嘗試這樣的事情,也許是:

var myFunc = myObject.onclick, myFuncName = ""; 

for(prop in window) { 
    if(window.hasOwnProperty(prop) && window[prop] === myFunc) { 
     myFuncName = prop; // myFuncName is now the name of the function. This only works if you didn't assign an anonymous function to the click handler. 
     break; 
    } 
} 

但說實話,我認爲這是一個有點矯枉過正。

1

這取決於如何連接event

如果你沒有像jQuery的結合onclick你可以這樣做:

var obj = document.getElementById('elementId'); 
console.log(obj.onclick); 
49

我使用Chrome的開發者工具這樣的:

Event Listener Breakpoints in Google Chrome's developer tools

檢查click框,然後點擊您想要查找處理程序的頁面上的元素。如果你使用的是jQuery(或類似的庫),你可能必須先找到你的代碼。

+1

我從來不知道這存在於鉻中。這真棒,爲我解答了這個問題。 – circlecube

+0

感謝您告知我們關於此工具的信息,但是如果要指出jQuery庫中的代碼行,此方法非常有用。如何知道我的代碼的哪個部分正在運行。 –

+1

@whitelettersandblankspaces我現在知道的唯一方法就是遍歷jQuery的代碼,直到找到你的代碼。 – benekastah

相關問題