我在Microsoft Edge中使用我的(ASP.NET)Web应用程序时遇到了奇怪的问题。
在某个时刻onclick
事件停止工作。页面上响应onclick
事件的所有按钮都停止工作。在同一页面上,我有一些响应onmousedown
事件的按钮,它们继续工作。
如果我刷新页面,问题就消失了。控制台中没有错误。 我没有其他浏览器(包括Windows 10下的IE11)的这个问题。
你们有没有遇到类似的问题?
答案 0 :(得分:5)
这不是一个完整的答案,因为它没有解决为什么 click
事件不起作用,但我觉得它属于我的团队,我无可救药地试图找到这个问题的答案。它似乎是Edge中的一个错误,我们尝试过的每一个解决方法都失败了,直到我偶然发现@ Come的评论。
解决方案是将所有click
个事件更改为mouseup
个事件,模仿相同的行为。由于某些原因,mouseup
即使click
未被触发也会被触发。 mousedown
也有效,但mouseup
更适当地模仿click
。
var listenType = (navigator.userAgent.toLowerCase().indexOf('edge') != -1) ? 'mouseup' : 'click';
// ...
$("#my_element").on(listenType, function()
{
// ...
}
希望这有助于某人!
答案 1 :(得分:5)
这是Edge中的一个错误。
我发现它与弹出子窗口和重新排列(或修改)表格有关。
要解决此问题,您必须强制重绘表格。您可以通过在修改表之前设置display:none,然后在更改后设置display:previousValue来完成此操作。
希望这有帮助。
答案 2 :(得分:2)
我的修复方法是创建一个“隐藏”的输入元素并调用焦点,这会奇怪地使点击返回。
答案 3 :(得分:1)
就我而言,删除子元素会带来这个问题。
因此,当我删除元素(包括用innerHTML替换DOM)时,我会在删除之前为元素创建style.display = "none"
。
这解决了这个问题。
例如,我使用此功能
function removeComponent(selector) {
$(selector).css("display", "none");
return $(selector).detach();
}
而不是
function removeComponent(selector) {
return $(selector).detach();
}