2011-08-31 10 views
9

मैं यह जांचना चाहता हूं कि सीएसएस संपत्ति pointer-events (see documentation) उपयोगकर्ता के ब्राउज़र द्वारा समर्थित है या नहीं।जेएस में जांचें कि क्या सीएसएस संपत्ति समर्थित है?

वर्तमान में, उदाहरण के लिए, यह ओपेरा द्वारा समर्थित नहीं है और मुझे आईई के कुछ संस्करणों पर विश्वास है।

मैं जावास्क्रिप्ट में एक चेक चलाने के लिए और एचटीएमएल के उपयुक्त बिट प्रदर्शित करना चाहता हूं कि यह समर्थित है या नहीं।

क्या उपयोगकर्ता-एजेंट स्ट्रिंग की जांच करने से ऐसा करने का कोई बेहतर तरीका है?

+1

आमतौर पर आप जांचते हैं कि उपयोगकर्ता एजेंट क्या है और इससे आप जानते हैं कि क्या है या समर्थित नहीं है। – Endophage

+2

@ एन्डोफेज: आमतौर पर, आप ऐसा नहीं करते हैं। [फ़ीचर पहचान] (http://api.jquery.com/jQuery.support/) बेहतर दृष्टिकोण है। हालांकि 'पॉइंटर-इवेंट' के मामले में, कोई विश्वसनीय परीक्षण नहीं है। – thirtydot

+0

@thirtydot सुविधा का पता लगाना ठीक है यदि केवल कुछ दिलचस्प चीजें हैं जो आप करना चाहते हैं। यदि आपके पास पता लगाने के लिए बहुत सारी सुविधाएं हैं, तो आधुनिकता में सब कुछ कहें, यह अक्षम है। – Endophage

उत्तर

3

मुझे लगता है कि

if ("pointer-events" in document.body.style) 

या

if ("pointerEvents" in document.body.style) 

एसवीजी सामग्री के मामले में पर्याप्त होना चाहिए।

+4

यह [सच में मूल्यांकन करता है] (http://jsfiddle.net/M27PT/) अभी तक [इरादे के रूप में काम नहीं करता] [http://jsfiddle.net/7TvVY/10/) IE9 में। – Artyom

+0

@art शायद ऐसा इसलिए है क्योंकि [IE9 ने इस एसवीजी संपत्ति का विस्तार नहीं किया] [http://msdn.microsoft.com/en-us/library/ff972269 (v = vs.85) .aspx) HTML सामग्री में। – Knu

+0

ऐसा लगता है कि यह फ़ायरफ़ॉक्स में दूसरी तरफ है: आपका कथन गलत लौटाता है, फिर भी सीएसएस इरादे के रूप में काम करता है। – Artyom

2

दोनों आईई 9 और Firefox में सच के लिए निम्न मूल्यांकन करता है:

if ('pointerEvents' in document.documentElement.style) 
+0

और ओपेरा में, जो निश्चित रूप से इसे HTML संपत्ति के रूप में समर्थन नहीं करता है, इसलिए मुझे डर है कि काम नहीं करेगा। – Richard

+0

यह कोई जवाब नहीं है, लेकिन यह सच है – taseenb

6
गैर एसवीजी सामग्री के लिए

इस स्क्रिप्ट काम करना चाहिए:
https://github.com/ausi/Feature-detection-technique-for-pointer-events

आप भी इसे Modernizr बिना उपयोग कर सकते हैं:

var pointerEventsSupported = (function(){ 
    var element = document.createElement('x'), 
     documentElement = document.documentElement, 
     getComputedStyle = window.getComputedStyle, 
     supports; 
    if(!('pointerEvents' in element.style)){ 
     return false; 
    } 
    element.style.pointerEvents = 'auto'; 
    element.style.pointerEvents = 'x'; 
    documentElement.appendChild(element); 
    supports = getComputedStyle && 
     getComputedStyle(element, '').pointerEvents === 'auto'; 
    documentElement.removeChild(element); 
    return !!supports; 
})(); 
if(pointerEventsSupported){ 
    // do something 
} 
+0

अद्भुत! इसे पोस्ट करने के लिए धन्यवाद! –

+0

@ सर्जसागन अब इसे मॉडर्निजर गैर-कोर डिटेक्ट्स में भी शामिल किया गया है। यदि आप Modernizr का उपयोग करना चाहते हैं तो आप http://modernizr.com/download/ पर जा सकते हैं और गैर-कोर डिटेक्ट्स में css-pointerevents को सक्रिय कर सकते हैं। – ausi

संबंधित मुद्दे