आपको किसी फ़ंक्शन में alert
लपेटने की आवश्यकता है। यह काम करेगा:
ronan.addEventListener("click", function() { alert('Hi'); }, false);
यहाँ सबूत के लिए एक fiddle है। alert
का उपयोग अकेले काम नहीं करता है क्योंकि जब श्रोता को निष्पादित किया जाता है तो उस फ़ंक्शन के भीतर this
का मान उस ऑब्जेक्ट पर सेट होता है जिस पर यह सुन रहा है। उदाहरण के लिए, यदि आप ronan
पर श्रोता सेट करते हैं, तो उस श्रोता this === ronan
के भीतर। यह alert
के लिए एक समस्या प्रस्तुत करता है क्योंकि उस कार्य को window
के बराबर होने की उम्मीद है। आप (कोई यमक इरादा) एक और समारोह में समारोह लपेटकर या जो कुछ भी यह उम्मीद this
होने के लिए करने के लिए यह बाध्यकारी इस पर काम कर सकते हैं:
document.body.addEventListener('click', alert.bind(window), false);
मत भूलना कि IE < 9 में आप attachEvent
उपयोग करने की आवश्यकता addEventListener
के बजाए।
apply
/call
का उपयोग कर addEventListener
आपका दूसरा प्रयास के साथ काम नहीं करेगा क्योंकि आप window.addEventListener
करने के लिए अपने तर्क लागू करने के लिए कोशिश कर रहे हैं, के रूप में, HTMLElement.prototype.addEventListener
करने का विरोध किया है जो एक तरह से अलग है पर एक नोट फ़ंक्शन पूरी तरह से:
// This won't work
addEventListener.apply(ronan, ["click", alert.bind(window), false]);
// This will work
HTMLElement.prototype.addEventListener.apply(ronan, ['click', alert.bind(window), false]);
स्रोत
2011-08-27 10:15:23
शायद मुझे यह –
सबमिट करने के लिए सुबह तक इंतजार करना चाहिए था यह 'चेतावनी' हो सकता है ... मूल कार्य क्या रिक्त 'फ़ंक्शन() {}' इसकी जगह पर काम करता है? – James
@ जे-पी संख्या, जिसने –