English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Metodi di evento cross-browser implementati in JavaScript
Implementare il binding degli eventi, la rimozione degli eventi e l'acquisizione di alcune proprietà degli eventi di uso comune in JavaScript, spesso deve considerare la compatibilità tra browser diversi, di seguito è fornito un oggetto evento cross-browser:
var EventUtil = { on: function(element, type, handler) { /* 添加事件 */ if (element.addEventListener) { element.addEventListener(type, handler, false); } else if (element.attachEvent) { //IE Attenzione: in questo caso il gestore degli eventi viene eseguito nell'ambito globale, quindi gli eventi associati con attachEvent, in questo momento, equivalgono a window this all'interno della funzione di gestione degli eventi, quindi attenzione quando si utilizza element.attachEvent("on" + type, handler); } else { element["on" + type] = handler; } }, off: 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; } }, getEvent: function(event) { /* 返回对event对象的引用 */ return event ? event : window.event; }, getTarget: function(event) { /* 返回事件的目标 */ return event.target || event.srcElement; }, preventDefault: function(event) { /* 取消事件的默认行为 */ if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } }, stopPropagation: function(event) { /* 阻止事件冒泡 */ if (event.stopPropagation) { event.stopPropagation();}} } else { event.cancelBubble = true; } }, /* Questi due eventi mouseover e mouserout coinvolgono il movimento del puntatore del mouse da un elemento al limite di un altro elemento. */ getRelatedTarget: function(event) { if (event.relatedTarget) { return event.relatedTarget; } else if (event.toElement) {//Evento mouserout di IE8 return event.toElement; } else if (event.fromElement) {//Evento mouseover di IE8 return event.fromElement; } else { return null;//Altri eventi } } };
Chiamata come segue:
EventUtil.on(document, "click", function(event){//Associare l'evento click all'elemento document event = EventUtil.getEvent(event);//Ottieni l'oggetto evento event alert("Coordinate dello schermo: " + event.screenX + "," + event.screenY); });
Articolo tratto da 'JavaScript High Performance Programming Third Edition'
Grazie per la lettura, spero che possa aiutarti, grazie per il supporto al nostro sito!