1. Modelo de eventos tradicionales
Hay limitaciones en los modelos de eventos tradicionales.
El modelo en línea se utiliza en forma de atributos de etiqueta HTML y se mezcla con HTML. Este método indudablemente causa problemas con la modificación y la extensión y rara vez se usa.
El modelo de script escribe funciones de procesamiento de eventos en un archivo JS, obtiene elementos de la página para vincular las funciones de evento correspondientes para activar la ejecución. Pero también hay deficiencias:
1. Un evento une múltiples funciones de escucha de eventos, este último anula el primero.
2. El enlace repetido debe ser restringido
3. Estandarizar objetos de evento
2. Enlace de eventos modernos
Los eventos de nivel DOM2 definen dos métodos para agregar y eliminar eventos: AddEventListener () y RemoVentListener (). Reciben tres parámetros: nombre de evento, función, burbujeante o valor booleano capturado (verdadero significa captura, falso significa burbujeamiento).
En consecuencia, IE proporciona dos métodos similares adjunteEvent () y DETACHEVENT (), pero los dos métodos de IE tienen otros problemas: es imposible pasar este objeto (esto en los puntos de IE a la ventana) puede usar el método de llamada para hacerse pasar por un objeto:
function addEvent (obj, type, fn) {if (typeOf obj.AdDeventListener! = 'Undefined') {obj.addeventListener (type, fn, false); } else if (obj.attachevent! = 'Undefined') {obj.attachevent ('on' + type, function () {fn.call (obj, window.event);}); }};Sin embargo, dado que las funciones anónimas se ejecutan al agregar, no se pueden eliminar después de agregar; Además, los métodos de IE proporcionados por IE también tendrán problemas como la ejecución fallida de eventos de unión en secuencia y fugas de memoria.
Para resolver esta serie de problemas, es necesario encapsular aún más el método y usar el estándar de nivel DOM2 para otros navegadores. Para IE, se adopta agregar y eliminar en función del modo tradicional. La idea es:
1. Agregar es usar la tabla hash de JS para almacenar eventos de objetos, asignar un valor de identificación a cada evento de objeto y primero determinar si existe la misma función de procesamiento en el orden de adición. Si no existe, agregue la función de enlace de eventos a la tabla hash a su vez. Esto resuelve el problema de la incapacidad para ejecutar en secuencia y adiciones repetidas.
2. Al eliminar, se usa para juzgar la coincidencia de la función transversal. Si existe, se elimina.
Resumir:
No tenía una comprensión mucho más profunda de la vinculación de eventos JS antes, e incluso me quedé en el modelo de vinculación de eventos tradicional, y todavía tenía una comprensión demasiado superficial de la implementación del programa. Esta vez, cuando aprendí la biblioteca de encapsulación, aprendí muchas aplicaciones orientadas a objetos en JS. Aunque las bibliotecas de JS como JQuery han logrado un buen efecto de encapsulación de los mecanismos de unión de datos, solo sé la razón, pero no sé por qué, y siento que si tengo la sensación de que me mantengan en la oscuridad, analizaré la implementación específica y sentiré una iluminación repentina. También me doy cuenta de que para hacer un buen trabajo en un programa compatible y versátil, necesito considerar mucho contenido y resolver muchos problemas, y gradualmente estoy aclarando muchos de estos problemas.