2016-01-25 43 views
0

我正在開發一個Windows窗體應用程序來解析和分析網頁。我使用網頁瀏覽器控制。該網頁有html和javascript代碼。和我的Windows窗體有c#代碼。下面是代碼:檢測HTML元素是否分配了javascript函數

HTML代碼:

<div id="div1" onclick='func1(this);'> 
</div> 
<div id="div2"> 
</div> 
<div id="div3"> 
</div> 

的Javascript:

:導航相關的網址後,我的窗戶

function func1(element) { 
    ... 
} 
document.getElementById("div2").onclick = function foo() { doSomething(); } 
document.getElementById("div3").addEventListener("click", anyFunc); 

C#代碼生成應用程序

HtmlElement el1 = WebBrowser.Document.GetElementById("div1"); HtmlElement el2 = WebBrowser.Document.GetElementById("div2"); HtmlElement el3 = WebBrowser.Document.GetElementById("div3"); String el1JavaFunc = el1.GetAttribute("onClick"); String el2JavaFunc = el2.GetAttribute("onClick"); String el3JavaFunc = el3.GetAttribute("onClick"); // check if el1JavaFunc is empty or null // check if el2JavaFunc is empty or null // check if el3JavaFunc is empty or null 

以這種方式檢查每個元素的相關字符串後,我可以確定元素是否已分配了javascript函數。這適用於el1和el2,但它爲el3返回空字符串。

我怎樣才能確定第三個元素使用addEventListener分配了javascript函數?

+0

爲什麼你必須測試事件監聽器是否已被連接? –

+0

[如何檢查動態連接的事件偵聽器是否存在?]可能的重複?(http://stackoverflow.com/questions/11455515/how-to-check-whether-dynamically-attached-event-listener-exists-or - 不)或[如何檢查是否有任何附加到元素/文檔的JavaScript事件監聽器/處理程序? ](http://stackoverflow.com/questions/2382994/how-to-check-if-any-javascript-event-listeners-handlers-attached-to-an-element-d) – Turnip

回答

1

我會建議始終在呼喚閱讀進度,無論如何,這是因爲:

如果多個相同的事件偵聽器上註冊使用相同的參數相同的事件目標,重複的實例是 丟棄。它們不會導致EventListener被調用兩次,並且它們不需要使用removeEventListener方法手動刪除它們。 https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

0

彷彿這裏提到:Check if an element has event listener on it. no jquery

有沒有辦法來確定是否一個元素被監聽事件或沒有,使用JavaScript。最接近的是getEventListeners(node),其中node是要檢查的元素。但是,只能在谷歌瀏覽器中使用,並且只能在控制檯中使用。所以它不能用於生產。

0

DOM不提供任何API來檢索所有eventListeners的列表(reference) 因此不能這樣做。

也許你可以控制addEventListener()的代碼嗎?然後,您可以在那裏創建一個監聽器列表,並在稍後使用該列表。

相關問題