2015-04-18 3 views
5

क्या किसी दिए गए सीएसएस प्रॉपर्टी के लिए जावास्क्रिप्ट के साथ मान्य मानों की सूची प्राप्त करने का कोई तरीका है या जांचें कि आपके द्वारा निर्धारित मूल्य वैध है या नहीं?जावास्क्रिप्ट के साथ एक सीएसएस संपत्ति के लिए वैध मानों की सूची कैसे प्राप्त करें?

पूर्व .: अगर मैं document.getElementById('foo').style.cursor = "grab"; सेट करने का प्रयास करता हूं।

कुछ भी नहीं होता है और संपत्ति अपरिवर्तित बनी हुई है (कम से कम क्रोम में)।

मैं केवल वर्तमान ब्राउज़र के लिए मान्य मानों की एक सूची प्राप्त करना चाहता हूं।

उदाहरण के लिए, फ़ायरफ़ॉक्स पर मुझे सूची में -moz-grab मिल जाएगा और आईई पर मुझे पकड़ या उसके किसी भी प्रकार का संस्करण नहीं मिलेगा।

मैं आवश्यकता होने पर विक्रेता उपसर्ग जोड़ने में सक्षम होना चाहता हूं और शायद फॉलबैक प्रदान करने का एक तरीका हो सकता है।

+0

'पाठ align' केवल' बाएँ, दाएँ, केंद्र, start' लेते हैं, का औचित्य साबित कर सकते हैं। 'bar'' text-align' – mohamedrias

+0

के लिए अमान्य है क्या आपका मतलब है कि आपके नियंत्रण में 'Maincontent_' आदि संलग्न करें? – Vikrant

+0

मुझे नहीं पता कि 'Maincontent_'' क्या है, मैंने इसका कोई फायदा नहीं उठाया। – Erik

उत्तर

2

मुझे पता है कि आपका प्रश्न विक्रेता विशिष्ट कर्सर (और, संभावित रूप से, अन्य सीएसएस गुणों) के लिए मान्य मानों की जांच करने का एक तरीका मांग रहा है, लेकिन यदि आप जो भी ढूंढ रहे हैं वह कर्सर स्टाइल के लिए एक क्रॉस-ब्राउज़र समाधान है, तो हो सकता है कि आप प्रश्न में कर्सर के लिए बस अपनी खुद की छवियों का उपयोग करना चाहते हैं।

http://www.google.com/intl/en_ALL/mapfiles/closedhand.cur http://www.google.com/intl/en_ALL/mapfiles/openhand.cur

उदाहरण के लिए, आप इस्तेमाल कर सकते हैं:

document.getElementById('foo').style.cursor = "url(/closedhand.cur) 4 4"; 

तुम भी इस संयोजन के रूप में उदाहरण के लिए, यदि ज्ञात गुण मान्य हैं देखने के लिए एक चेक के साथ उपयोग करने के लिए इच्छा हो सकती है:

if(window.CSS.supports('cursor','grab')) 
{ 
    cursor = 'grab'; 
} 
else if(window.CSS.supports('cursor', '-moz-grab')) 
{ 
    cursor = '-moz-grab'; 
} 
else 
{ 
    cursor = 'url(/grab.cur)'; 
} 
document.getElementById('foo').style.cursor = cursor; 

आप आसानी से सभी लोकप्रिय विक्रेता उपसर्गों का परीक्षण करने के लिए इसका विस्तार कर सकते हैं, फिर केवल थाई लागू करें जिन गुणों के साथ आप जानते हैं उनके पास तर्क है, सीमित ब्राउज़र समर्थन है।

CSS.supports API Browser Compatibility
CSS.supports MDN

+0

'' CSS.supports'' विधि वह है जिसे मैं ढूंढ रहा था, बस एक शर्म की बात है कि यह व्यापक रूप से समर्थित नहीं है। बहुत बहुत धन्यवाद! – Erik

+0

@Erik: 'CSS.supports() 'आपको समर्थित मानों की एक सूची नहीं देता है - यह एक संपत्ति-मूल्य संयोजन का परीक्षण करता है जिसे आपको स्वयं आपूर्ति करना है। आपके मूल प्रश्न के आधार को छोड़कर यह है कि आप * इन मानों को पहले से नहीं जानते हैं। – BoltClock

+0

मैंने इसे शीर्षक में नहीं रखा, लेकिन शुरुआत से मैंने पूछा कि क्या कोई मूल्य वैध है या नहीं। ऐसा लगता है कि संभावित मूल्यों की सूची प्राप्त करने का कोई नियमित तरीका नहीं है। यह उत्तर थोडा मेरे लिए काम करता है क्योंकि मैं उपलब्ध होने पर '' सीएसएस, सुपरपोर्ट्स() '' का उपयोग कर सकता हूं और जब यह नहीं होता है तो फ़ॉलबैक का उपयोग कर सकते हैं। – Erik

1

एक दृष्टिकोण है कि मेरे दिमाग में आता है वैध सीएसएस मूल्यों के साथ प्री-पॉप्युलेट करने के लिए सरणियों, और फिर खोज है -

var validValues = { 
    'textAlign': ['left', 'right', 'center', 'justify', 'start'] 
}; 

var userSpecifiedCSSValue = documet.getElementById('foo').style.textAlign.toLower(); 
if (validValues.textAlign.indexOf(userSpecifiedCSSValue) > -1) { 
    // valid 
} 

नोट: indexOf आईई < लिए उपलब्ध नहीं है = 8.

var userStyle = document.getElementById('foo').style, 
    userSpecifiedValue, 
    allowedCSSValues; 

for (cssProperty in userStyle) { 

    if (userStyle.hasOwnProperty(cssProperty) && 
      validValues.hasOwnProperty(cssProperty)) { 

     userSpecifiedValue = userStyle[cssProperty].toLower(); 
     allowedCSSValues = validValues[cssProperty] 

     if (allowedCSSValues.indexOf(userSpecifiedValue) > -1) { 
      // valid 
     } else { 
      // invalid 
     } 
    } 
} 

आप भी ब्राउज़र-विशिष्ट सत्यापन शामिल करना चाहते हैं, तो आप वैध valu के सूची बना सकते हैं - आप इसे सामान्य बनाना चाहते हैं एस ब्राउज़र प्रकार के आधार पर। बस अपनी ऑब्जेक्ट में एक और परत बनाएं -

var validValues = { 
    'chrome': { 
     'textAlign': []// arrays with values 
    } 
} 

हालांकि मेरे लिए यह अभी भी एक हैकी समाधान जैसा लगता है।

+0

मैं वैध मानों की सूची को हार्डकोड नहीं कर सकता क्योंकि यह ब्राउज़र के उपयोग के आधार पर बदलता है। – Erik

+0

@Erik: आप सभी ब्राउज़र-विशिष्ट अनुमत मानों को सूचीबद्ध कर सकते हैं, और फिर ब्राउज़र पहचान के आधार पर सही प्राप्त कर सकते हैं। जहां तक ​​मुझे पता है, जावास्क्रिप्ट में कोई विकल्प नहीं है जो स्वचालित रूप से आपको एक निश्चित सीएसएस संपत्ति के लिए अनुमति मान देगा। –

+2

मुझे नहीं लगता कि जावास्क्रिप्ट में किसी सीएसएस संपत्ति के मूल्य की वैधता को देखना संभव है, लाइब्रेरी का उपयोग किए बिना सत्यापन तर्क की सूची बनाए रखता है। यदि आप अपना खुद का लिखना नहीं चाहते हैं, तो आप संभावित रूप से [सीएसएसलिंट गिटहब] (https://github.com/CSSLint/csslint) को अपनी परियोजना के साथ शामिल कर सकते हैं, क्योंकि यह वही है जो वे कर रहे हैं। – Quantastical

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