0

在C#中,我通過ExecuteScript()函數執行了JavaScript。在JavaScript中,我通過單擊按鈕添加一個EventListener到網頁,說'附加'。現在我想刪除另一個按鈕上的EventListener,單擊「分離」。刪除動態和以前添加的事件偵聽器按鈕單擊

現在在「附加」按鈕窗體下。 我寫了下面的內容

document.addEventListener('click', hilightElement, false); 

其中highlightElement是我的功能。

在「分離」按鈕窗體下。 我已經寫了下面的

document.removeEventListener('click', hilightElement); 

這裏document.removeEventListener不即我加入仍然存在的事件監聽工作。

有沒有什麼辦法可以刪除事件監聽器,以便'點擊'事件在'分離'按鈕點擊後沒有做任何事情。

+1

還有你的代碼工作正常,在所有JavaScript環境所以必須有一些關於你的具體實施,使其無法正常工作。您可能不得不向我們展示更多的實施方式,以便我們知道哪裏出了問題。 – jfriend00

+0

究竟是什麼問題具體? –

+0

在同一元素上有多個'事件監聽器'的可能性.. – Rayon

回答

0

我想你的代碼如下,它按預期工作:

var attach = document.getElementById('attach'); 
 
var detach = document.getElementById('detach'); 
 
var hilightElement = function() { 
 
    alert("Here"); 
 
}; 
 
attach.addEventListener('click', function(e) { 
 
    e.stopPropagation(); 
 
    document.addEventListener('click', hilightElement, false); 
 
}); 
 
detach.addEventListener('click', function() { 
 
    document.removeEventListener('click', hilightElement); 
 
});
<button type="button" id="attach">Attach</button> 
 
<button type="button" id="detach">Detach</button>

+0

嗨Rayon,謝謝你的回答。但我正在處理C#上下文,所以我不能使用detach.addEventListener,因爲它是你的Html Button的id。你可以幫助我在C#上下文中,附加和分離是我的2種形式以按鈕形式顯示。並點擊那些AddEvent和RemoveEvent應該分別發生 –

0

嘗試Rayons的例子,因爲我意識到我正在編寫相同的代碼。

+0

這工作正常,但addEventListener是在不同的按鈕單擊和removeEventListener是在不同的按鈕單擊。請嘗試 –

+0

我不明白你的意思。只要能夠訪問處理程序變量,哪個函數添加並移除處理程序都無關緊要。 – Shilly

+0

此方法可能不能跨瀏覽器安全。 Firefox似乎沒有從addEventListener返回任何東西。 @Shilly – traktor53