Estoy desarrollando una aplicación web que requiere solicitudes Ajax de larga ejecución. Desafortunadamente, en Firefox, presionar Escape durante una solicitud tiene el inconveniente de matar la solicitud y la información que contenía. Esto es bastante molesto, ya que esto puede conducir a todo tipo de complicaciones desagradables si esto sucede en el momento equivocado. Por lo tanto, me gustaría desactivar esta característica.Presionar Escape en Firefox mata mis solicitudes de Ajax. Me gustaría evitar esto
Mi primer reflejo fue interceptar pulsaciones de teclas en los límites de <cuerpo>, para garantizar que no llegaran a la ventana. Para este propósito, instalé un controlador de eventos [keypress], solo para eventos cuyo [keyChar] es 27, y lo hice invocar [stopPropagation] y [avoidDefault]. Y por un tiempo, parecía que esto estaba funcionando.
Luego, me di cuenta de que no funcionaría cuando el usuario no hubiera hecho clic en ninguna parte de la ventana, ya que los controladores de eventos <cuerpo> nunca recibieron el evento. Intenté adjuntar mi controlador al documento < > o <ventana> en vano, así que finalmente terminé agregando un controlador de evento [load] y tuve que forzar el foco en <cuerpo>. Y por un tiempo, parecía que esto estaba funcionando.
Entonces, me di cuenta de que cuando el usuario estaba editando una entrada > <, por alguna razón, una vez más, el cuerpo < >, <documento> o <ventana> controlador de eventos nunca parecen recibir el evento. Por lo tanto, agregué otro controlador [keypress], interceptando con [preventDefault] en la entrada < > cuando [keyChar] es 27.
Por el momento, parece que está funcionando. Sin embargo, con el historial de este error en mi aplicación, soy un poco pesimista.
Entonces, me pregunto si hay un método mejor y más reproducible. Recuerda que el error parece aparecer solo en FF, por lo que estoy bastante dispuesto a adoptar un enfoque solo de FF aquí.
Gracias
¿Cómo exactamente 'Esc' cancela solicitudes Ajax en primer lugar? Nunca había escuchado que esto sucediera antes. –
@Matt, si tiene Firebug, notará que la conexión se elimina en el mismo momento en que golpea escape. –
@Kirk - wow, sí veo eso. ¿Sucede sin Firebug, también? –