यह वास्तव में इतना कठिन नहीं है - इतनी सारी घटना परिभाषाएं नहीं हैं, केवल तीन संस्करण हैं। पहले एक corect एक (addEventListener
), तो वहाँ आईई रास्ता (attachEvent
) है और फिर वहाँ पुराने ब्राउज़र (element.onevent = function
)
के लिए संगतता रास्ता तो एक पूरी घटना समाधान से निपटने कुछ इस तरह दिखाई देगा:
setEvent = function(element, eventName, handler){
if('addEventListener' in element){
//W3
element.addEventListener(eventName,handler,false);
}else if('attachEvent' in elm){
//IE
elm.attachEvent('on'+eventName,handler)
}else{
// compatibility
elm['on'+eventName] = handler;
}
}
और स्पष्ट करने के लिए घटनाओं:
clearEvent = function(element, eventName, handler){
if('removeEventListener' in element){
//W3
element.removeEventListener(eventName,handler,false);
}else if('detachEvent' in elm){
//IE
elm.detachEvent('on'+eventName,handler)
}else{
// compatibility
elm['on'+eventName] = null;
}
}
और एक उदाहरण:
setEvent(document, "click", function(){alert('hello world!');});
clearEvent(document, "click", function(){alert('hello world!');});
यह वास्तव में एक पूर्ण उदाहरण नहीं है हालांकि संगतता हैंडलर हमेशा पिछली घटनाओं को ओवरराइट करता है (यह क्रियाओं को जोड़ नहीं रहा है, यह ओवरराइटिंग है) ताकि आप शायद यह जांचना चाहें कि हैंडलर पहले से सेट है या नहीं और फिर इसे कुछ अस्थायी चर में सहेजें और घटना हैंडलर समारोह के अंदर इसे आग।
आप कर सकते हैं अपना खुद का बनाओ। यह बहुत ही सरल, शुद्ध जेएस है और उसे डीओएम की आवश्यकता नहीं है - मेरा जवाब यहां देखें: https://stackoverflow.com/questions/31110706/write-a-custom-event-dispatcher-in-javascript/42751577?noredirect=1# उत्तर -42751577 –