13

क्या यह पता लगाना संभव है कि कुछ निश्चित ब्राउज़र में कुछ ईवेंट समर्थित हैं या नहीं? मैं यह पता लगा सकता हूं कि ब्राउज़र दस्तावेज़ का समर्थन करता है .addEventListener, लेकिन मुझे यह जानने की ज़रूरत है कि यह DOMAttrModified ईवेंट का समर्थन करता है या नहीं। फ़ायरफ़ॉक्स और ओपेरा इसका समर्थन करते हैं, लेकिन क्रोम और अन्य नहीं करते हैं।जावास्क्रिप्ट - पता लगाएं कि घटना लिस्टर समर्थित है

धन्यवाद अगर कोई मदद कर सकता है!

+1

मैं इसे हालांकि इधर देखो संभव है IE और क्रोम के लिए समर्थन के रूप में अच्छी तरह से देखने के लिए नहीं लगता है: http://help.dottoro.com/ljdchxcl.php –

+0

ठनक यू, हालांकि मैं पहले से ही सभी के लिए काम कर समाधान है ब्राउज़रों। मैं यह जानने का एक तरीका ढूंढ रहा था कि कुछ ब्राउज़र ने ईवेंट का समर्थन किया है, इसलिए मैं अपने वैकल्पिक तरीकों को लागू कर सकता हूं। ऐसा लगता है कि मुझे jQuery.browser पहचान का सहारा लेना पड़ सकता है। –

उत्तर

15

अपडेट किया गया जवाब:

हाँ, तो आप इस सुविधा-पता लगा सकते हैं। एक तत्व बनाएं, घटना के लिए सुनो, और तत्व पर एक विशेषता बदलें। मेरे परीक्षणों में, आपको डीओएम पेड़ में तत्व जोड़ने की भी आवश्यकता नहीं है, जिससे यह एक अच्छा, निहित सुविधा पहचान हो।

उदाहरण:

function isDOMAttrModifiedSupported() { 
    var p, flag; 

    flag = false; 
    p = document.createElement('p'); 
    if (p.addEventListener) { 
     p.addEventListener('DOMAttrModified', callback, false); 
    } 
    else if (p.attachEvent) { 
     p.attachEvent('onDOMAttrModified', callback); 
    } 
    else { 
     // Assume not 
     return false; 
    } 
    p.setAttribute('id', 'target'); 
    return flag; 

    function callback() { 
     flag = true; 
    } 
} 

Live copy

फ़ायरफ़ॉक्स ऊपर सभी संशोधन पर कॉलबैक से चलाता है; उनमें से कोई भी क्रोम।


मूल जवाब:

आप सुविधा-पता लगा सकते हैं कि क्या कुछ घटनाओं का समर्थन कर रहे, के रूप में this handy page पर दिखाया गया है। मुझे नहीं पता कि आप विशेष रूप से उस के लिए परीक्षण कर सकते हैं, लेकिन यदि आप कर सकते हैं, तो वह कोड आपको शुरू कर सकता है।

अद्यतन: मैं dumped Kangax's code into JSBin और यह कोशिश की, कि सूँघने तकनीक की तरह नहीं दिखता है कि घटना के लिए काम करता है (जब तक मैं नाम गलत तरीके से लिखे गए या कुछ और है, फ़ायरफ़ॉक्स "गलत" दिखाया जा रहा है)। लेकिन उपरोक्त मेरी तकनीक करता है।

+0

वाह, 'document.body: क्लिक करें? एफएफ 4 में झूठा '!! – ifaour

+0

@ifaour: वाह, वह ** ** अजीब है। एफएफ 3.6 भी। और फिर भी, हम सभी जानते हैं कि यह सच नहीं है ... –

+0

पीपीके [यहां] (http://www.quirksmode.org/dom/events/index.html#link2) बताता है कि 'DOMAttrModified' प्रकार की घटना काम नहीं करती है पारंपरिक 'ऑनवेन्ट' इवेंट पंजीकरण प्रणाली के साथ, संभवतया संभवतः आपके पास मौजूद परीक्षण को तोड़ दिया गया है, जो तत्व –

0
function isDOMAttrModifiedSupported() { 
    var supported = false; 
    function handler() { 
     supported = true; 
    } 
    document.addEventListener('DOMAttrModified', handler); 
    var attr = 'TEST'; 
    document.body.setAttribute(attr, 'foo'); // aka $('body').attr(attr, 'foo'); 
    document.removeEventListener('DOMAttrModified', handler); 
    document.body.setAttribute(attr, null); 
    return supported; 
    }