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!
Este es un error en Edge.
Lo que he descubierto es que está relacionado con abrir una ventana secundaria y reorganizar (o modificar) tr en una tabla.
Para arreglar esto, tienes que forzar la tabla para volver a dibujar. Puede hacer esto configurando display: none antes de modificar la tabla, y luego configurando display: previousValue después de cambiarlo.
Espero que esto ayude.
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.