2015-01-02 4 views
10

मैं एक छाया रूट के साथ वेब घटकों को सीख रहा हूं और अगर बाहरी स्टाइलशीट को लोड करना संभव है तो बॉक्स पर कोड के साथ संभव नहीं है? मैं बहुलक या किसी अन्य वेब घटक पुस्तकालय (अभी तक) का उपयोग नहीं कर रहा हूँ। नीचे दिए गए कोड:वेब घटकों में छाया डोम के लिए बाहरी स्टाइलशीट

<script src="../../libs/jquery-2.1.1.min.js"></script> 
<script> 
    var hollaProto = Object.create(HTMLElement.prototype); 
    hollaProto.createdCallback = function() { 
     var shadow = this.createShadowRoot(); 
     var content = document.querySelector('link[rel=import]').import.querySelector("div"); 

     $("button[data-command=holla]", content).on("click", function() { alert("Holla!"); }); 

     shadow.appendChild(content); 
    }; 
    var hollaWidget = document.registerElement("holla-back", { 
     prototype: hollaProto 
    }); 
</script> 
<div class="holla-back"> 
    <button data-command="holla">Holla!</button> 
</div> 

अगर मैं शीर्ष मेरे लिंक टैग डाल दिया, पहले स्क्रिप्ट टैग से ऊपर, मैं पूरे वेब आयु शैली, लेकिन नहीं वेब घटक।

यदि मैं इसे div.holla-back के तहत रखता हूं तो यह कुछ भी शैली नहीं है।

आप वेब घटकों के साथ बाहरी स्टाइलशीट का उपयोग कैसे करते हैं?

उत्तर

9

लिंक टैग छाया डोम according to the spec में निष्क्रिय हैं। हालांकि, आप @import का उपयोग कर सकते हैं, हालांकि इसका अपना प्रदर्शन समस्या है।

पॉलिमर इस तरह काम करता है यह link टैग देखता है और उन शैलियों को लोड करने और उन्हें लागू करने के लिए xhr का उपयोग करता है।

संपादित करें:

छाया डोम पर काम कर रहे लोगों को इस कमी के बारे में पता कर रहे हैं और यह ठीक किया जाना आवश्यक है। उम्मीद है कि भविष्य में हम एक ऐसी प्रणाली के साथ आ सकते हैं जो बाहरी स्टाइलशीट का समर्थन करता हो।

+0

क्या आप @import का उपयोग करके स्पष्टीकरण दे सकते हैं? –

+2

आप ऐसा कुछ कर सकते हैं: http://jsbin.com/qefoyi/1/edit लेकिन @import का भारी उपयोग बहुत से http अनुरोधों का कारण बन रहा है और वास्तव में आपके पृष्ठ को धीमा कर रहा है। अनुशंसित दृष्टिकोण शैली तत्वों का उपयोग पहले से ही उनके अंदर अपने सभी मार्कअप के साथ करना है। – robdodson

+0

मुझे लगता है कि आपका क्या मतलब है। यह बदसूरत है लेकिन मैं जो चाहता था उसे प्राप्त करता हूं, हालांकि आप सही हैं कि इसमें बहुत सारे अनुरोध जोड़े गए हैं। –

0

छाया डोम लिंक टैग पर प्रतिक्रिया नहीं करता है। असल में, जब आप लिंक टैग का उपयोग करते हैं तो क्रोम 41 एक त्रुटि फेंकता है। हमने vulcanize का उपयोग कर निर्माण समय पर सीएसएस कक्षाओं को रेखांकित करके उस सीमा के आसपास काम किया है। यह आपके सीएसएस और घटक परिभाषा को अलग करने में काफी आसान साबित हुआ।

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