2011-04-15 22 views
26

मेरे क्रोम एक्सटेंशन को उपयोगकर्ता के पृष्ठ पर कुछ सीएसएस नियमों को संशोधित करने की आवश्यकता है। document.styleSheets के माध्यम से शैलियों तक पहुंच केवल एक ही डोमेन के भीतर से जुड़े शैलियों तक पहुंच प्रदान करती है। document.styleSheets सरणी के अन्य तत्वों में cssRules/rules शून्य पर सेट है।सीएसएस नियम/नियम क्रोम में शून्य हैं

यह क्रॉस डोमेन नीति क्यों लागू होती है? शैलियों को उनकी उत्पत्ति के बावजूद लागू किया जा रहा है, तो बिंदु क्या है? और मेरे मामले में इसके आसपास कैसे जाना है?


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

कारण मैं (के रूप में बस अपने खुद के जोड़ने के खिलाफ) उपयोगकर्ता सीएसएस नियम संशोधित करने की जरूरत है कि मैं * नियमों से प्रभावित होने से विस्तार के द्वारा इंजेक्शन कस्टम तत्व की रक्षा के लिए की जरूरत है। see details in this question

+2

क्या यह आपके द्वारा जोड़े गए सभी तत्वों पर एक पूर्ण सीएसएस रीसेट करने में मदद करेगा? शायद इससे मदद मिलेगी: http://stackoverflow.com/questions/4966030/how-not-to-inherit-styles-in-a- क्रोम-एक्सटेंशन-कंटेंट-स्क्रिप्ट/4974 9 0 9 – yonran

+1

हाँ, मैं एक ही दिशा में थोड़ी सोच रहा हूं। – artemave

+2

आप अन्य शैलियों को ओवरराइड करने के लिए महत्वपूर्ण संशोधक का उपयोग कर सकते हैं। – NoBugs

उत्तर

6

सामग्री स्क्रिप्ट्स में नियमित जावास्क्रिप्ट की तुलना में कोई भी क्रॉस-डोमेन विशेषाधिकार नहीं है, इसलिए कोई सीमाएं पूरी की जाती हैं। संबंधित question #1, question #2 देखें।

आप प्रकट में अपने खुद के सीएसएस शैली इंजेक्षन कर सकते हैं:

"content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "css": ["mystyles.css"] 
    } 
] 

जहां उच्च specificity साथ नियमों को परिभाषित करने से मूल शैलियों ओवरराइट करने का प्रयास कर सकते हैं।

भी कर सकते हैं बस tweak concrete element styles जावास्क्रिप्ट के माध्यम से https: //:

document.getElementById("id").style.property="value"; 
+0

मैंने अपना प्रश्न अपडेट किया है यह इंगित करने के लिए कि मेरे स्वयं के सीएसएस को परिभाषित करना बहुत मदद नहीं है। – artemave

+1

स्टाइलशीट में एक्सेस-कंट्रोल-ऑब्जेक्ट-हेडर हेडर जोड़ते समय भी असंभव प्रतीत होता है, नियम/cssrules अलग-अलग डोमेन से शून्य हैं। ज्यादातर मामलों में शायद एक स्वीकार्य नहीं है, स्टाइलशीट की सामग्री AJAX अनुरोध के माध्यम से प्राप्त करना है, और दस्तावेज़ हेड में स्टाइल टैग को प्रतिक्रिया जोड़ना है। – CodeToad

+1

हालांकि [दिलचस्प जवाब यहां] (http://stackoverflow.com/a/18471848/1028230), सर्ग के पहले जुड़े प्रश्न पर: 'इस समस्या का एकमात्र वास्तविक समाधान है कि सीओआरएस आपके सीएसएस को पहले स्थान पर लोड करे। एक बाहरी डोमेन से सीएसएस लोड करने के लिए एक CORS xmlHTTPRequest का उपयोग करके, और फिर प्रतिक्रिया को इंजेक्शन ... ' – ruffin

0

मैं http से यूआरएल को बदलने के द्वारा जारी किए जाने की मेरी संस्करण तय //। रवींद्र!

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