繁体   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