जब माउस ब्राउज़र विंडो को छोड़ देता है तो मुझे कुछ जावास्क्रिप्ट कोड चलाने की इच्छा है। मैं केवल सफारी समर्थन करने की आवश्यकता (वेबकिट।)जावास्क्रिप्ट घटना जब माउस ब्राउज़र विंडो छोड़ देता है
मैं खिड़की पर एक mouseout हैंडलर डालने की कोशिश की। उस हैंडलर को विश्वसनीय रूप से बुलाया जाता है जब माउस ब्राउज़र विंडो छोड़ देता है। लेकिन जब यह माउस दस्तावेज़ में तत्वों के बीच चलता है तो इसे बुलबुले करने के कारण भी कहा जाता है। मैं यह नहीं समझ सकता कि माउस ने वास्तव में विंडो को कब छोड़ा है और जब यह केवल तत्वों के बीच स्थानांतरित हो गया है।
माउस खिड़की छोड़ता है, तो ठीक एक घटना उत्पन्न होता है, और लक्ष्य तत्व तत्व माउस वास्तव में समाप्त हो गया था प्रतीत होता है। तो यह देखने के लिए जांचें कि लक्षित तत्व विंडो है या दस्तावेज़ काम नहीं करता है। और पूरे पृष्ठ को एक अदृश्य युक्त div में लपेटना या तो काम नहीं करता है: यदि div अदृश्य है, तो माउस कभी खत्म नहीं होगा, इसलिए कुछ भी नहीं बदलेगा।
(वही बात तब होती है जब मैं दस्तावेज़ या दस्तावेज़ पर किसी हैंडलर डालता हूं, उस आश्चर्यजनक दस्तावेज को छोड़कर। माउस को माउसओवर/माउसआउट घटनाएं नहीं मिलती हैं जब माउस खिड़की के खाली भाग में प्रवेश करता है या छोड़ देता है, जैसे कि खाली खड़ी बिल्कुल द्वारा बनाई अंतरिक्ष स्थिति नीचे के साथ एक तत्व:।। 0 के लिए है कि अंतरिक्ष, दस्तावेज़ और खिड़की लक्ष्य किया जा रहा < एचटीएमएल > साथ माउसओवर/mouseout घटनाओं मिल जाएगा, लेकिन document.body नहीं होगा)
कुछ विचार मैं था:
- प्रत्येक माउसआउट ईवेंट पर, माउस की वास्तविक स्थिति प्राप्त करें और देखें कि यह वास्तव में खिड़की पर है या नहीं। लेकिन मुझे नहीं पता कि यह वास्तव में संभव है और ऐसा लगता है कि सभी दौड़ स्थितियों को खत्म करना मुश्किल होगा।
- एक माउसओवर हैंडलर भी पंजीकृत करें और उन मामलों का पता लगाएं जहां माउसआउट को माउसओवर द्वारा आगे बढ़ाया नहीं जाता है (या जल्द ही पीछा किया जाता है)। लेकिन इसके लिए एक टाइमर की आवश्यकता होगी।
हम prototype.js का उपयोग करते हैं तो आदर्श रूप से मैं प्रोटोटाइप के Event.observe के संदर्भ में समाधान व्यक्त करना चाहता हूं, लेकिन मैं उस भाग को समझ सकता हूं।
किसी भी सुझाव के लिए धन्यवाद!
MooTools MouseEnter/MouseLeave कस्टम ईवेंट (http://demos.mootools.net/Mouseenter) प्रदान करता है। मुझे प्रोटोटाइप नहीं पता, लेकिन क्या यह कुछ समान नहीं है? – Duroth
@Duroth सूचक के लिए धन्यवाद। प्रोटोटाइप 1.6.1 प्रकट नहीं होता है, लेकिन यह 1.6.2 मई की तरह दिखता है। – Geoff