आदेश में ईवेंट जोड़ने के लिए इनलाइन घटनाओं बनाम का उपयोग attachEvent/addEventListener हम इस सरल 1 समाधान इस्तेमाल कर सकते हैं:जावास्क्रिप्ट घटनाओं को जोड़ने पार ब्राउज़र समारोह कार्यान्वयन:
function AddEvent(html_element, event_name, event_function)
{
if(html_element.attachEvent) //Internet Explorer
html_element.attachEvent("on" + event_name, function() {event_function.call(html_element);});
else if(html_element.addEventListener) //Firefox & company
html_element.addEventListener(event_name, event_function, false); //don't need the 'call' trick because in FF everything already works in the right way
}
या इस 2 समाधान (कि कहते हैं इनलाइन घटनाओं):
function AddEvent(html_element, event_name, event_function)
{
var old_event = html_element['on' + event_name];
if(typeof old_event !== 'function')
html_element['on' + event_name] = function() { event_function.call(html_element); };
else
html_element['on' + event_name] = function() { old_event(); event_function.call(html_element); };
}
ये दोनों पार ब्राउज़रों कर रहे हैं और इस तरह से इस्तेमाल किया जा सकता है:
AddEvent(document.getElementById('some_div_id'), 'click', function()
{
alert(this.tagName); //shows 'DIV'
});
जब से मैं महसूस कर रही attachEvent/addEventListener
घटनाओं कार्यान्वयन से निपटने में अधिक के आसपास उपयोग किया जाता है है, मैं सोच रहा हूँ:
हैं वहाँ किसी भी नुकसान/2 समाधान का उपयोग कर के खिलाफ कमियां है कि मैं बेहतर के बारे में पता हो सकता है ? इनलाइन
- 2 समाधान शिकंजा अप तत्व के innerHTML:
मैं दो देख सकते हैं, लेकिन मैं और अधिक में दिलचस्पी रखता हूँ (यदि हो तो) सभी कार्यों को एक निश्चित घटना प्रकार (
html_element['on' + event_name] = null
) के साथ जुड़े हैं, लेकिन मैंdetachEvent/removeEventListener
उपयोग नहीं कर सकते वास्तव में एक विशेष समारोह हटाने के लिए।
कोई जवाब जैसे: "jQuery का उपयोग करें" या कोई अन्य एफडब्लू व्यर्थ हैं!
आप 'event' पैरामीटर – Bergi
@Bergi बारे में भूल गया की तरह दोनों कोड का प्रयोग करेंगे: जहां, क्या? –
इनमें से सभी 'event_function.call (...)' अभिव्यक्तियों में। हैंडलर को 'घटना' के बिना बुलाया जाता है! – Bergi