2010-01-11 17 views
13

जेएस और/या jQuery का उपयोग करके गतिशील शैली टैग बनाने का सबसे अच्छा तरीका क्या है?गतिशील इनलाइन स्टाइलशीट

मैंने कोशिश की यह: "। विधि या संपत्ति का उपयोग करने के लिए अप्रत्याशित कॉल"

var style= jQuery('<style>').text('.test{}'); 

यह एफएफ में काम करता है लेकिन IE7 में एक त्रुटि पॉप

var style = document.createElement('style'); 
style.innerHTML='.test{}'; 

एक ही त्रुटि देता है। इससे कोई फर्क नहीं पड़ता कि मैं innerHTML या innerText का उपयोग करता हूं। अजीब चीज यह है कि स्टाइल टैग जोड़ने से पहले यह एक त्रुटि दिखाता है।

मुझे संदेह है कि cssText इसके साथ कुछ करने के लिए है, लेकिन मुझे यकीन नहीं है कि कैसे।

+0

के साथ इस में से कुछ का उपयोग करने के मुझे विश्वास है कि सीएसएस डेटा, पाठ/HTML से अलग माना जाता है कर सकता है। –

उत्तर

10

एक स्टाइलशीट में पाठ जोड़ना जो सही ढंग से प्रस्तुत किया जाएगा अन्य ब्राउज़र की तुलना में IE में एक अलग वाक्यविन्यास की आवश्यकता है। आप ताकि आप मज़बूती से jQuery पाठ संपादन विधियों का उपयोग नहीं कर सकते हैं jQuery

document.addStyle= function(str, hoo, med){ 
    var el= document.createElement('style'); 
    el.type= "text/css"; 
    el.media= med || 'screen'; 
    if(hoo) el.title= hoo; 
    if(el.styleSheet) el.styleSheet.cssText= str;//IE only 
    else el.appendChild(document.createTextNode(str)); 
    return document.getElementsByTagName('head')[0].appendChild(el); 
    } 
+0

महान काम करता है। jQuery यह सार होना चाहिए! किसी भी प्रदर्शन के मुद्दों के बारे में आप जानते हैं? – David

+0

मैं अक्सर उपयोगकर्ता प्रदर्शन प्राथमिकता ऑनलोड को बनाए रखने के लिए कुकी के साथ इसका उपयोग करता हूं, और कभी-कभी तत्वों के माध्यम से लूपिंग और व्यक्तिगत शैलियों को लागू करने के बजाय पृष्ठ पर बड़ी शैली में परिवर्तन करने के लिए। आईई, फ़ायरफ़ॉक्स, ओपेरा और सफारी में वर्षों से यह अच्छी तरह से काम करता है, भले ही स्टाइलशीट नियम विधियों को कम से कम समर्थित किया गया हो। – kennebec

+0

डेविड आईई में इस विधि का उपयोग करने के लिए एक सारणीबद्ध jQuery प्लगइन और नोट्स के लिए मेरी पोस्ट देखता है। –

0

मैं जावास्क्रिप्ट के document.styleSheets, और addRule() विधि में देखता हूं।

(अस्वीकरण: मैं वास्तव में कभी उपयोग किया है यह अपने आप)

1

सीएसएस नियम गतिशील त्रुटिपूर्ण जाएगा, भले ही यह काम किया पैदा करने का यह तरीका। आईई बस <style> तत्वों को अनदेखा कर देगा और 30 से अधिक तत्वों को डाला जाएगा (http://support.microsoft.com/kb/262161 देखें)।

आप जावास्क्रिप्ट के माध्यम से सीएसएस नियमों में हेरफेर करने के उद्देश्य से jquery.rule प्लगइन का उपयोग कर सकते हैं।

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