Perfection kills के लिए धन्यवाद, हम घटना समर्थन का पता लगाने के लिए निम्न JavaScript का उपयोग कर सकते हैं:'फोकसइन' समर्थन का पता कैसे लगाएं?
function hasEvent(ev) {
var elem = document.createElement('a'),
type = 'on' + ev,
supported = elem[type] !== undefined;
if (!supported) {
elem.setAttribute(type, 'return;');
supported = typeof elem[type] === 'function';
}
elem = null;
return supported;
}
यह केवल समय मैं इसकी आवश्यकता के बारे में के लिए काम करता है: mouseenter
समर्थन का पता लगाने; hasEvent('mouseenter')
क्रोम, फ़ायरफ़ॉक्स, आदि में झूठी वापसी करेगा, जैसा कि इसे करना चाहिए।
लेकिन अब मैं ब्राउज़रों कि focusin
और focusout
घटनाओं का समर्थन नहीं करते "ठीक" करने के लिए कोशिश कर रहा हूँ। According to PPK, यह मूल रूप से सिर्फ फ़ायरफ़ॉक्स है। दुर्भाग्यवश, क्रोम और सफारी को निम्नलिखित कारणों से "अपूर्ण" समर्थन के रूप में सूचीबद्ध किया गया है:
सफारी और क्रोम इन घटनाओं को केवल addEventListener के साथ आग लगाना; पारंपरिक पंजीकरण के साथ नहीं।
सामान्यतः, यह ठीक है; मैं वैसे भी addEventListener
का उपयोग कर रहा हूं। यह का मतलब है, हालांकि, elem.onfocusin !== undefined
के माध्यम से समर्थन का पता लगाने काम नहीं करेगा। क्रोम में
<p>Do I support <a href="#">focusin</a>?</p>
<script>
var elem = document.getElementsByTagName('p')[0];
// hasEvent method defined here
function listener() {
var response = hasEvent('focusin') ? 'Yes!' : 'No...';
alert(response);
}
elem.addEventListener('focusin', listener, false);
</script>
ऊपर अलर्ट No...
!!: मैं इसे बाहर का परीक्षण किया है, और यह सच है ब्राउजर स्नीफिंग का उपयोग किये बिना यह पता लगाने का कोई तरीका है कि ब्राउज़र focusin
का समर्थन करता है या नहीं?
माउसेंटर और माउसओवर के बीच कोई अंतर है? या फोकस और फोकस? या फोकसआउट और धुंध? – Ibu
@Ibu 'mouseenter' बबल नहीं करता है, जबकि 'माउसओवर' करता है; 'फोकसिन'/'फोकसआउट' * डू * बबल, 'फोकस'/'ब्लर' नहीं है। – sdleihssirhc
एक और महत्वपूर्ण तथ्य यह है कि फोकसिन और फोकसआउट ईवेंट ऑब्जेक्ट्स में 'relatedTarget' प्रॉपर्टी होती है जो उस तत्व को इंगित करती है जो खो गया/प्राप्त फोकस है। –