2012-07-19 14 views
26

मैं जावास्क्रिप्ट से मेरी सीएसएस जो सामग्री स्क्रिप्ट के रूप में इंजेक्ट किया जाता है इंजेक्षन कोशिश कर रहा हूँ:क्रोम एक्सटेंशन में सामग्री स्क्रिप्ट फ़ाइल का उपयोग कर सीएसएस को इंजेक्ट कैसे करें?

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

मैं सीएसएस इंजेक्शन लगाने के बारे में similar question पाया है, लेकिन accepted answer से कोड का उपयोग करते समय मैं एक समस्या का सामना करना पड़ा। क्रोम एक्सटेंशन के

को नकार लोड: //phkgaaiaakklogbhkdnpjncedlbamani/fix.css बाद मैं कुछ पेज इस संदेश को कंसोल में प्रकट होता है लोड

var link = document.createElement("link"); 
link.href = chrome.extension.getURL("style.css"); 
link.type = "text/css"; 
link.rel = "stylesheet"; 
document.getElementsByTagName("head")[0].appendChild(link); 

: यहाँ मेरी script.js सामग्री है। संसाधन को विस्तार से बाहर पृष्ठों द्वारा लोड किए जाने के लिए क्रम में web_accessible_resources मेनिफेस्ट कुंजी में सूचीबद्ध होना चाहिए।

क्या इसे ठीक करने का कोई तरीका है? या, शायद, उस जावास्क्रिप्ट फ़ाइल से सीएसएस इंजेक्ट करने का कोई और तरीका?

नोट: मैं सीधे स्टाइल शीट को मैनिफेस्ट से शामिल नहीं कर सकता।

उत्तर

45

आप मैनिफेस्ट की अनुमति फ़ील्ड में जोड़ सकते हैं; web_accessible_resources देखें। तो अगर आप प्रकट करने के लिए इस जोड़ना होगा:

, "web_accessible_resources": [ 
     "fix.css" 
    ] 

भी देखें "Programmatic injection"। और insertCSS()। हालांकि मैं समझता हूँ कि तुम क्या करने कि इस सटीक उदाहरण में नहीं करना चाहती

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

:

सबसे अनुप्रयोगों के लिए, वह सब createElement कोड भूल जाते हैं और सिर्फ प्रकट करने के लिए सीएसएस फ़ाइल जोड़ने।

+0

लेकिन मुझे जावास्क्रिप्ट में इस स्टाइल शीट से संबंधित कुछ चीजें करने की ज़रूरत है, इसलिए यह मेरे मामले में कोई समाधान नहीं है। – Roman

+1

वास्तव में, प्रश्न में दिखाया गया कोड, कम से कम नवीनतम क्रोम * रिलीज * (20) पर उस त्रुटि को उत्पन्न नहीं करेगा। कुछ छूट रहा है। क्या "fix.css" एक वास्तविक फ़ाइल है? यह कहां स्थित है? पूर्ण एक्सटेंशन कोड से लिंक करें। आप क्रोम का किस संस्करण का उपयोग कर रहे हैं? ... मैनिफेस्ट की अनुमतियों में जोड़ने के लिए जोड़ना अनियंत्रित (पहला लिंक) काम करना चाहिए। क्या आपने कोशिश की? –

+0

यहां स्रोत कोड है - [https://github.com/Tsukanov/CleanTube/tree/activation-feature ](https://github.com/Tsukanov/CleanTube/tree/activation-feature)। मैंने इसे 20 और 22 संस्करणों में परीक्षण किया, वही परिणाम मिला। और मुझे यकीन नहीं है कि मैनिफेस्ट में क्या जोड़ना है। – Roman

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