www w3schools w3school page internet browsers asp javascript javascript-events onclick mouseevent microsoft-edge

javascript - w3schools - Microsoft Edge: el evento onclick deja de funcionar?



w3schools statistics (4)

Tengo problemas extraños con mi aplicación web (ASP.NET) en Microsoft Edge.

En cierto punto, el evento onclick deja de funcionar. Todos los botones de la página que responden al evento onclick dejan de funcionar. En la misma página tengo algunos botones que responden al evento onmousedown y siguen funcionando.

Si actualizo la página, el problema desaparece. No hay errores en la consola. No tengo este problema con otros navegadores (incluido IE11 en Windows 10).

¿Alguno de ustedes tuvo problemas similares?


En mi caso, la eliminación de elementos secundarios trae este problema. Por lo tanto, cuando style.display = "none" el elemento (incluyendo reemplazar DOM por innerHTML), hago style.display = "none" para el elemento antes de eliminar. Esto resuelve el problema.

Por ejemplo, yo uso esta función.

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

en lugar de

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


Esta no es una respuesta completa, ya que no explica por qué los eventos de click no funcionan, pero creo que pertenece aquí, ya que mi equipo y yo nos quedamos estancados tratando de encontrar una respuesta a esta pregunta. Parece ser un error en Edge, y todas las soluciones que intentamos fallaron, hasta que encontré el comentario de @ Come arriba.

La solución fue cambiar todos nuestros eventos de click eventos de mouseup , emulando el mismo comportamiento. Por alguna razón, mouseup se activó incluso cuando no se hizo click . mousedown funciona, pero mouseup emula más apropiadamente el click .

var listenType = (navigator.userAgent.toLowerCase().indexOf(''edge'') != -1) ? ''mouseup'' : ''click''; // ... $("#my_element").on(listenType, function() { // ... }

Esperemos que esto ayude a alguien!



Mi solución fue crear un elemento de entrada "oculto" y llamar al enfoque en él, lo que mágicamente hace que los clics regresen.