簡體   English   中英

Microsoft Edge:onclick事件停止工作?

[英]Microsoft Edge: onclick event stops working?

我在Microsoft Edge中的(ASP.NET)Web應用程序有奇怪的問題。

在某一點上, onclick事件停止工作。 頁面上響應onclick事件的所有按鈕都停止工作。 在同一頁面上,我有一些按鈕響應onmousedown事件並繼續工作。

如果我刷新頁面,問題就消失了。 控制台中沒有錯誤。 我沒有其他瀏覽器(包括Windows 10下的IE11)的這個問題。

你們有沒有遇到過類似的問題?

這不是一個完整的答案,因為它沒有解決為什么 click事件不起作用,但我覺得它屬於這里,因為我的團隊和我無可救葯地試圖找到這個問題的答案。 它似乎是Edge中的一個錯誤,我們嘗試過的每一個解決方法都失敗了,直到我偶然發現了@ Come的評論。

解決方案是將所有click事件更改為mouseup事件,模擬相同的行為。 由於某種原因,即使沒有click也會觸發mouseup mousedown也可以,但是mouseup更好地模擬click

var listenType = (navigator.userAgent.toLowerCase().indexOf('edge') != -1) ? 'mouseup' : 'click';

// ...

$("#my_element").on(listenType, function() 
{
    // ...
}

希望這有助於某人!

這是Edge中的一個錯誤。

我發現它與彈出子窗口和重新排列(或修改)表中的tr有關。

https://connect.microsoft.com/IE/feedback/details/2109810/browser-stops-registering-click-events-on-table

要解決此問題,您必須強制重繪表。 您可以通過在修改表之前設置display:none,然后在更改后設置display:previousValue來完成此操作。

希望這可以幫助。

我的修復方法是創建一個“隱藏”的輸入元素,並將焦點調用到它上面,這會奇怪地使點擊返回。

就我而言,刪除子元素會帶來這個問題。 因此,當我刪除元素(包括用innerHTML替換DOM)時,我會在刪除之前為該元素創建style.display = "none" 這解決了這個問題。

例如,我使用此功能

function removeComponent(selector) {
  $(selector).css("display", "none");
  return $(selector).detach();
}

代替

function removeComponent(selector) {
  return $(selector).detach();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM