2013-08-30 6 views
9

मैं पृष्ठ में एक सीएसएस फ़ाइल डालने के लिए chrome.tabs.insertCSS(null, {file: "style.css"}); का उपयोग करता हूं, और यह ठीक काम करता है।मैं इंजेक्शन वाली सीएसएस फ़ाइल कैसे हटा सकता हूं?

  • लेकिन क्या फ़ाइल को हटाने का कोई तरीका है?
  • इसके अलावा, अगर मैं style.css नाम की एक और फ़ाइल इंजेक्ट करता हूं, तो क्या यह पहले को ओवरराइड करता है?
  • और वैसे, मैं इंजेक्शन वाली सीएसएस फाइल कहां देख सकता हूं? स्क्रिप्ट को "स्रोत/सामग्री स्क्रिप्ट" (क्रोम डेवलपर टूल के) में देखा जा सकता है, लेकिन मुझे सीएसएस फाइलें नहीं मिल रही हैं।
+0

मैंने पहले ही आपके तीसरे प्रश्न से पूछा था, क्यों इंजेक्शन सीएसएस देव उपकरण में दिखाई नहीं देता है [यहां] (http://stackoverflow.com/questions/28402524/how-to-view-css- स्टाइलशीट- इंजेक्शन -by-a-google-chrome-extension-use-dev-tools? noredirect = 1 # comment45224324_28402524) जब मैं इस पर आया। ऐसा लगता है कि किसी ने इसका उत्तर देने का प्रयास नहीं किया है, इसलिए मैं अपनी तरह से छोड़ दूंगा। – foobarbecue

उत्तर

6

मुझे यकीन नहीं है कि इस प्रश्न का संदर्भ क्या है, लेकिन ऐसा लगता है कि आप पृष्ठ के विशिष्ट तत्वों को एक निश्चित तरीके से हाइलाइट करना चाहते हैं और उस कस्टम हाइलाइट को टॉगल करने में सक्षम होना चाहते हैं। (बल्कि स्टाइल तत्वों की तुलना में अपने एक्सटेंशन बनाते हैं)

के बाद से आप वास्तव में सीएसएस फ़ाइल को नहीं निकाल सकते हैं या सिर्फ एक ही नाम के साथ एक फ़ाइल को जोड़कर मिटाने में, मैं निम्नलिखित सुझाव:

  • लपेट अपने body.JMaylinCustomStyles
  • body तत्व में JMaylinCustomStyles कक्षा को जोड़ने या निकालने के लिए जावास्क्रिप्ट का उपयोग करें।
  • कोई कदम 3.

है लाभ यह है कि यह क्या है के शीर्ष पर ज्यादा काम नहीं जोड़ता है, तो आप यह पता लगाने की कैसे एक में अपने कस्टम शैलियों को ओवरराइड करने की जरूरत नहीं है कि कर रहे हैं दूसरी स्टाइलशीट (यह हमेशा बहुत परेशान और त्रुटि-प्रवण होती है) और यह भी कि आप CSS specificity में थोड़ा सा लाभ प्राप्त करते हैं, इसलिए आपकी शैलियों को लागू होने की अधिक संभावना है।

ध्यान दें कि सबसे अच्छा तरीका है "रैप" करने के लिए अपनी शैली के बाद से आप सचमुच फ़ाइल और } तल पर के शीर्ष पर body.JMaylinCustomStyles { जोड़ सकते हैं Sass या LESS उपयोग करने के लिए किया जाएगा।

+0

धन्यवाद Timothée, मैं ऐसा करने जा रहा हूं * – JMaylin

2

शायद किसी अन्य फ़ाइल है कि पहले आप जिस फ़ाइल डाला से अपने सभी सीएसएस सेटिंग्स बदल देगा सम्मिलित हैं सीएसएस फ़ाइल https://developer.chrome.com/extensions/tabs.html

आपका सबसे अच्छा शर्त को हटाने के लिए कोई एपीआई है।

+1

जब मैं खाली 'शैली को इंजेक्ट करने का प्रयास करता हूं।css' यह पिछले एक – JMaylin

+1

को ओवरराइड नहीं करता है, आपको अपने सभी विकल्पों को स्पष्ट रूप से ओवरराइट करना पड़ सकता है। उदाहरण के लिए यदि आपने पृष्ठभूमि रंग को नीले रंग में बदल दिया है, तो आपको इसे वापस सफेद पर सेट करना होगा। –

+0

यह एक विकल्प है। लेकिन मेरे मामले में यह काम नहीं करता है क्योंकि मुझे डिफ़ॉल्ट मानों को नहीं जानना है। – JMaylin

5

मैं अभी भी एक ही समस्या के खिलाफ आया हूं और सोचा कि मैं अपना समाधान साझा करूंगा।

function loadCSS(file) { 
    var link = document.createElement("link"); 
    link.href = chrome.extension.getURL(file + '.css'); 
    link.id = file; 
    link.type = "text/css"; 
    link.rel = "stylesheet"; 
    document.getElementsByTagName("head")[0].appendChild(link); 
} 

function unloadCSS(file) { 
    var cssNode = document.getElementById(file); 
    cssNode && cssNode.parentNode.removeChild(cssNode); 
} 

तर्क कॉल करने के लिए उन लोगों में से है जिसके लिए सामग्री स्क्रिप्ट में भी है, chrome.storage में डेटा के आधार पर: मैं एक सामग्री स्क्रिप्ट है कि तब लोड या तो की तरह सीएसएस उतारना होगा फोन कर रहा हूँ। तो आपको केवल स्क्रिप्ट को इंजेक्ट करने की आवश्यकता है और यह सीएसएस को जोड़/हटा देगा।

मेरा मामला वास्तव में थोड़ा अधिक जटिल है इसलिए मैं हमेशा सामग्री स्क्रिप्ट लोड करता हूं और सीएसएस लोड या अनलोड करने के लिए एक संदेश भेजता हूं। लेकिन इसमें प्रत्येक पृष्ठ लोड पर फ़ाइल लोड करने का ओवरहेड है।

+0

डेविड साझा करने के लिए धन्यवाद, यह एक दिलचस्प समाधान है – JMaylin

+0

@JMaylin मेरी खुशी। समाप्त विस्तार यहां है, कोड कच्चा है ताकि आप https://chrome.google.com/webstore/detail/skinny/lfohknefidgmanghfabkohkmlgbhmeho?utm_source=chrome-ntp-icon –

+0

को अनपैक और निरीक्षण करने में सक्षम होना चाहिए, मुझे आपका एक्सटेंशन पसंद है, लेकिन हम प्रतियोगियों हैं, यहां मेरी एक है https://chrome.google.com/webstore/detail/read-fast-speed-reading-e/pnffahcjemjliibgcafjpklgmbeknldi: डी – JMaylin

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