jsfiddleक्यों नहीं कर सकते एक mouseup घटना एक क्लिक करें घटना
<div class='wrapper'>
<button class='child'>Click me</button>
</div>
function h(e) {
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
alert(e.type);
return false;
}
document.querySelector('.wrapper').addEventListener('mouseup', h, false);
document.querySelector('.child').addEventListener('click', h, false);
को रोकने मैं इस फायरिंग से घटना 'क्लिक' को रोकने के लिए उम्मीद है, लेकिन ऐसा नहीं है। हालांकि, mouseup
से mousedown
बदलना वास्तव में क्लिक ईवेंट को रोकता है।
मैंने useCapture
तर्क को सही करने की भी कोशिश की है, और यह भी mouseup
के साथ वांछित व्यवहार का उत्पादन नहीं करता है। मैंने क्रोम और फ़ायरफ़ॉक्स पर इसका परीक्षण किया है। बग फाइल करने से पहले, मुझे लगा कि मैं यहां पूछूंगा।
क्या यह वर्तमान ब्राउज़र में एक बग है, या यह दस्तावेज व्यवहार है?
मैंने W3C standard (DOM level 2) की समीक्षा की है, और मैं इस व्यवहार को समझाने में कुछ भी नहीं ढूंढ पाया, लेकिन मुझे कुछ याद आ सकता था।
मेरे विशेष मामले में, मैं कोड के दो टुकड़ों को रद्द करने की कोशिश कर रहा हूं जो एक ही तत्व पर घटनाओं को सुनते हैं, और मैंने उस हिस्से पर कैप्चर घटनाओं का उपयोग करके अनुमान लगाया है, जो प्राथमिकता को हल करने का सबसे शानदार तरीका होगा, लेकिन फिर मैं इस समस्या में भाग गया। एफडब्ल्यूआईडब्ल्यू, मुझे केवल एफएफ और क्रोम के आधिकारिक रूप से समर्थित संस्करणों का समर्थन करना है (एफएफ के लिए ईएसआर शामिल है)।
'preventDefault' और 'stopImedimediPropagation' यहां अनावश्यक हैं (वैसे), क्योंकि कोई'
@Ian - मैंने यह सुनिश्चित करने के लिए जोड़ा कि मैंने ' टी जैसे टिप्पणियां प्राप्त करें "क्या आपने एक्स() या वाई() की कोशिश की है?"। आपकी दूसरी टिप्पणी के लिए, बच्चे से बुलबुले से पहले होने के लिए सच्ची ताकतों 'ट्रैपर' के माउसअप को 'उपयोग कैप्चर' सेट करना। मैंने इस कोड को शामिल नहीं किया, क्योंकि किसी भी मामले में, मुझे केवल एक चेतावनी() (एक अलग मूल तत्व के साथ) प्राप्त करना चाहिए, है ना? – tjameson
यदि आप माउसक्लिक को रोकना चाहते हैं, तो इसका उपयोग करें: http://jsfiddle.net/zhAHt/9/ – uSeRnAmEhAhAhAhAhA