Encapsular o manipulador de eventos de nível 0 de nível 0 e o manipulador de eventos de nível DOM2, ou seja, manipulador de eventos em objetos eventutil para obter efeito de navegador cruzado. O código é o seguinte:
var eventUTIL = {// Adicione a alça de evento AddEventHandler: function (elemento, tipo, manipulador) {if (element.addeventListener) {element.addeventListener (tipo, manipulador, false);} else (element.attachevent) {element.attachEvent ("no tipo"+tipo, handler); event handle removeEventHandler:function (element,type,handler) {if (element.removeEventListener) {element.removeEventListener(type, handler,false);}else if(element.detachEvent){element.detachEvent("on"+type,handler);}else {element["on"+type]=null;}},// Get the event object getEvent: function (event) {return event? Evento: window.event;}, // Obtenha o tipo de evento getType: function (event) {return event.type;}, // obtenha o objetivo do objetivo de destino getTarget: function (event) {if (event.Target) {revolver event.Target; (event) {if (event.target) {return event.target;} else {return event.srcelement;}}, // Obtenha o destino do objeto de eventos getTarget: function (event) {if (event.target) {return event.target;} else }pur.opt. (sweet.Target) {Event.Target;} {sound Event.SrceMente; (Event.stopPropagation) {event.stopPropagation ();} else {event.cancelbubble = true;}}, // impedir o comportamento padrão do evento PreventDefault: function (event) {if (event.preventDefault) {event.preventDefult {);Enquanto pratica o código, cometi vários erros, o que causou o erro de operação. Registre -o e aprofundar minha memória.
① Adicionar uma alça é o local onde o parâmetro é ofuscado: primeiro, os parâmetros do addEventHandler (elemento, tipo, manipulador) representam respectivamente qual elemento elemento é adicionado ao evento, o tipo de evento e o manipulador de funções de manuseio de eventos. Você é propenso a confundir as posições do manipulador e falso (representando o estágio de borbulhamento) no addEventlister posterior (tipo, manipulador, falso).
Levando ao resultado: durante o processo de escrita, pensei com cuidado e entendi quais parâmetros necessários para AddEventHandler e depois sabia qual parâmetro usar em qual posição. Finalmente, escrevi corretamente e não causei um erro.
Solução: entenda e lembre -se.
② No ramo do julgamento do manipulador de eventos do IE, o Anexevent e o destacar estão escritos incorretamente, e o evento está ausente, e apenas anexar ou destacar está escrito.
Porque o resultado: embora não haja erro, é impossível adicionar ou excluir eventos no IE usando o addEventHandler e o removeventHandler.
Solução: apenas pratique mais e lembre -se disso. Anexevent e destacar.
③ Esqueci de adicionar "on" aos parâmetros do Evento IE Handler AnexeEvent e Detachevent; Está escrito como AnexeEvent (tipo, manipulador). De fato, o correto deve ser onedEvent ("no"+tipo, manipulador), e eu também esqueci que existe um ramo de julgamento para o processamento de eventos de nível DOM0.
Resultado de causas: Da mesma forma, o processamento de eventos, ou seja, não é compatível. Adicionar ou excluir eventos usando métodos encapsulados no IE não pode ter sucesso.
Solução: Lembre -se apenas. Outra coisa a ser observada: elemento ["on"+tipo] é usado em eventos de nível DOM0. Por exemplo, o elemento ["on"+"click"] é equivalente a element.OnClick.
④ O último atributo também é adicionado com uma vírgula no final, como o comportamento padrão do PreventDefault ao bloquear o evento: adicione uma vírgula após a conclusão, como o seguinte snippet de código (comentário)
PreventDefault: function (event) {if (event.preventDefault) {event.preventDefault ();} else {event.returnValue = false;}}, // A última propriedade PreventDefault é adicionada com uma vírgula após a conclusão, ocorrerá um erro}Causas o resultado: foi relatado um erro ao ser executado no IE (onde a linha 54 do Event.js é a próxima linha da última vírgula, que é realmente causada por uma vírgula; a linha 10 do teste.html é chamada porque o método eventUtil.AddeventHandler em Event.js é chamado)
Solução: Sem dúvida, basta remover a última vírgula.
⑤ Ainda é um erro de ortografia. A propriedade CancelBubble no IE que impede que os eventos de borbulhassem foram escritos com mais um S, que é escrito como canceldbubbles.
Resultado: nenhum erro foi relatado, mas os eventos no IE não podem ser impedidos de borbulhar.
Solução: Altere de volta
O exposto acima é o problema de erro de baixo nível que o JavaScript encapsula o manipulador de eventos DOM no Event.js introduzido pelo editor. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!