La combinación CTRL + e activada es bastante molesta, necesito eliminar el controlador de teclas.
Desde Chrome, el detector de eventos está en textarea:
Así que creé un script y lo probé en devtools:
Array.from(document.querySelectorAll("textarea")).forEach(e => { const ev = getEventListeners(e) if (ev['keydown']) { console.log(ev['keydown']) ev['keydown'].forEach((row) => { e.removeEventListener('keydown', row.listener, false) }) } })Pero el detector de eventos todavía está allí, ¿qué estaba mal?
EDITAR
Como sugirió @wahoowa, esto funcionó parcialmente, CTRL + E ya no crea el acento grave en github.
Pero tampoco realiza la acción predeterminada en Mac. La acción predeterminada es saltar al final de la línea, ¿cómo puedo hacer el comportamiento predeterminado cuando se presiona CTRL + E ?
document.querySelectorAll("textarea").forEach(e => { e.addEventListener("keydown", ev => { if (ev.key == 'e' && ev.ctrlKey) { ev.preventDefault(); ev.stopPropagation(); } }) })En lugar de eliminarlo, puede agregar un detector de eventos a todos textarea elementos de área de texto para evitar el comportamiento predeterminado y también detener la propagación del evento a los elementos principales.
document.querySelectorAll("textarea").forEach(e => { e.addEventListener("keydown", ev => { ev.preventDefault(); ev.stopPropagation(); }) }) Tenga en cuenta que esta es la solución a su escenario, pero no responde a su pregunta inicial sobre cómo eliminar un detector de eventos. Si se agregaran otros detectores de eventos keydown a los elementos del área de textarea , no se eliminarían. Para eliminar realmente a los detectores de eventos, puede consultar estas otras preguntas: