2011-11-17 7 views
5

मेरे पास एक .css फ़ाइल से जुड़ा एक पृष्ठ है।क्या मैं कोड में सीएसएस क्लास रनटाइम की सामग्री को पढ़ सकता हूं?

.wrapper { 
color:red; 
} 

वहाँ के पीछे कोड में .wrapper तत्व क्रम का मूल्य को पढ़ने के लिए एक तरीका है: मान लीजिए कि उसमें इस सामग्री में है?

समस्या यह है कि रनटाइम एक अलग स्टाइलशीट जुड़ा हुआ है, इसलिए .wrapper हमेशा उपलब्ध है, लेकिन सामग्री हमेशा अलग होती है।

जो मैं पूरा करना चाहता हूं वह वर्तमान में संलग्न स्टाइलशीट से मूल्य (इस मामले में: रंग: लाल;) प्राप्त करना है।

क्या यह संभव है?

संपादित करें: है यह संभव ग्राहक के पक्ष है, तो मैं एक छिपी हुई फ़ील्ड में रख सकते हैं किसी भी तरह

+0

जहां तक ​​मुझे पता है कि हम सीएसएस क्लास में कोड को पीछे से प्राप्त नहीं कर सकते हैं। लेकिन हम CssClass नाम प्राप्त कर सकते हैं या विभिन्न गुणों के साथ एक CssClass जोड़ सकते हैं –

+0

हो सकता है कि आप Jquery द्वारा '$ (urelement) जैसे कुछ प्राप्त कर सकें .getStyle (' color ') ' – V4Vendetta

उत्तर

0
<script type="text/javascript"> 
    window.getComputedStyle = window.getComputedStyle || function (element) { return element.currentStyle; }; 

    window.onload = function() { 
      var dummy = document.createElement("span"); 
      dummy.className = "wrapper"; 
      document.getElementsByTagName("body")[0].appendChild(dummy); 
      document.getElementById("<%= WrapperColorHiddenField.ClientID %>").value = getComputedStyle(dummy).color; 
      document.getElementsByTagName("body")[0].removeChild(dummy); 
    } 
</script> 

कि समाधान के दोष यह है कि आप दिए गए मान पार्स करने के लिए की जरूरत है: IE में red मूल्य में जबकि लौटे क्रोम लौटे rgb(255,0,0)

0

,
यह संभव client side पर मुश्किल

हैपृष्ठ & पर एक छिपा तत्व जोड़ें कक्षा असाइन करें और फिर आप आसानी से jquery का उपयोग कर डीओएम तत्व के सीएसएस गुण प्राप्त कर सकते हैं।

var testElement = $("<div></div>"); 
testElement.addClass("wrapper"); 
testElement.css("display", "none"); 
$("body").append(testElement); 
alert(testElement.css('color')); 

server side आप सीएसएस फ़ाइल से मूल्यों को प्राप्त करना चाहते हैं पर,
जांच इस http://www.codeproject.com/KB/recipes/CSSParser.aspx

सादर, न्यू जर्सी

3

मुझे लगता है कि आपके पास लिंक करने वाली सीएसएस फ़ाइल के लिए पथ (भौतिक या आभासी) होगा।

यदि यह वेबसर्वर पर एक फ़ाइल है, तो आप इसे एक टेक्स्ट फ़ाइल में लोड कर सकते हैं, या यदि यह रिमोट सर्वर पर है तो आप इसे पाने और प्राप्त करने के लिए XMLHTTPRequest का उपयोग कर सकते हैं।

एक बार जब आपके पास लोड की गई फ़ाइल का बॉडी हो, तो निम्न reg-ex फ़ाइल को पार्स करेगा, रैपर क्लास का पता लगाएगा और मैच के पहले समूह में रंग कुंजी के मान को निकाल देगा।

\.wrapper[\s|\S]*color\s*:\s*([^;]*); 

कुछ नमूना कोड

var inputfileReader = new StreamReader("path to my css file"); 
    string inputLine = inputfileReader.ReadToEnd() ; 
    inputfileReader.Close(); 

    Regex cssParser = new Regex(@"\.wrapper[\s|\S]*color\s*:\s*([^;]*);"); 

    string myCssClass = string.Empty; ; 
    if (cssParser.Match(inputLine).Groups[1] != null) 
     myCssClass = cssParser.Match(inputLine).Groups[1].Value; 
0

ग्राहक के पक्ष में सीएसएस वर्गों के साथ खेल हमेशा संभव है। आप क्लाइंट साइड पर किसी भी कक्षा तक पहुंच सकते हैं। इसके अलावा आप एक छुपा क्षेत्र जोड़ सकते हैं या इसे एक्सेस कर सकते हैं।का प्रयोग करें jQuery:

$("#<%=ServerSideId.ClientID%>").addClass(className); 

आप आवश्यकताओं को मैं एक समाधान प्रदान कर सकते के साथ और अधिक स्पष्ट हो सकता है।

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