2013-08-30 20 views
9

Sayfanın içine bir css dosyası eklemek için chrome.tabs.insertCSS(null, {file: "style.css"}); kullanıyorum ve iyi çalışıyor.Enjekte edilen CSS dosyasını nasıl silerim?

  • Dosyayı kaldırmanın bir yolu var mı?
  • Ayrıca, style.css adlı başka bir dosya eklediysem, ilkini geçersiz mi?
  • Bu arada, enjekte edilen CSS dosyalarını nerede görebilirim? Komut dosyaları "Kaynaklar/İçerik Komut Dosyaları" nda (chrome geliştirici araçları) görüntülenebilir, ancak CSS dosyalarını bulamıyorum.
+0

Zaten [burada] dev araçlarında görünmüyor neden enjekte CSS hakkında üçüncü soru, (http://stackoverflow.com/questions/28402524/how-to-view-css-stylesheet-injected sormuştu -e-google-chrome-extension-using-dev-tools? noredirect = 1 # comment45224324_28402524) bunun karşısında geldiğimde. Kimsenin buraya cevap vermeye teşebbüs ettiği gibi görünmüyor, ben de benimki gibi ayrılacağım. – foobarbecue

cevap

6

Bu sorunun içeriğinin ne olduğundan emin değilim, ancak belki de sayfanın belirli öğelerini belirli bir şekilde vurgulamak ve bu özel vurgulamayı değiştirmek isteyebilirsiniz. aslında CSS dosyasını kaldırmak veya sadece aynı ada sahip bir dosya ekleyerek silemem yana

(yerine şekillendirme elemanlarından daha Uzantınız yaratacak), şu önermek:

  • sarmak senin body.JMaylinCustomStyles
  • gibi bir şeydeki özel stiller body öğeye JMaylinCustomStyles sınıfını eklemek veya kaldırmak için JavaScript'i kullanın.
  • faydaları Eğer bir de özel stillerini geçersiz kılmak anlamaya yok, ne varsa üstüne çok iş eklemek edilmemesidir hiçbir adım 3.

var ikinci stil sayfası (her zaman çok can sıkıcı ve hataya eğilimlidir) ve hatta CSS specificity'da biraz kazanırsınız, böylece stillerinizin uygulanması daha olasıdır. kelimenin tam anlamıyla sadece altta dosya ve } üstündeki body.JMaylinCustomStyles { ekleyebildiğinizden en iyi yolu "sarmak" için

Not senin stilleri Sass veya LESS kullanmak olacaktır.

+0

Teşekkür ederim Timothée, bunu yapacağım * – JMaylin

2

muhtemelen eklenen ilk dosyadan tüm CSS ayarlarını yerini alacak başka bir dosya eklemek istiyorum CSS dosyasını https://developer.chrome.com/extensions/tabs.html

En iyi bahis kaldırmak için bir API yoktur.

+1

Boş bir stil oluşturmaya çalıştığımda.css', bir önceki kodu geçersiz kılmıyor – JMaylin

+1

Tüm seçeneklerinizi açıkça yazmak zorunda kalabilirsiniz. Örneğin, arka plan rengini maviye değiştirdiyseniz, onu tekrar beyaza ayarlamanız gerekir. –

+0

Bu bir seçenektir. Ama benim durumumda işe yaramaz çünkü varsayılan değerleri bilmem gerekiyor. – JMaylin

5

Sadece aynı soruna karşı geldim ve çözümümü paylaşacağımı düşündüm.

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); 
} 

İçerik komut içinde de aramaya olanların hangi mantık, chrome.storage verilere dayanarak: Sonra yüklemek veya şöyle css kaldıracaktır bir içerik komut dosyası arıyorum. Yani yapmanız gereken tek şey komut dosyasını enjekte etmek ve css'yi ekleyecektir.

Durumum aslında biraz daha karmaşık olduğundan, her zaman içerik komut dosyasını yükledim ve css'yi yüklemek veya boşaltmak için ona bir ileti gönderiyorum. Ancak bu, her sayfa yüküne dosya yükleme yükü vardır.

+0

David'i paylaştığın için teşekkürler, bu ilginç bir çözüm – JMaylin

+0

@JMaylin Benim için zevk. Tamamlanmış uzantı buradadır, kod işlenip, https://chrome.google.com/webstore/detail/skinny/lfohknefidgmanghfabkohkmlgbhmeho?utm_source=chrome-ntp-icon –

+0

uzantılarınızı beğenip inceleyebilmeniz gerekir. Rakipleriz, işte benimkilerden biri https://chrome.google.com/webstore/detail/read-fast-speed-reading-e/pnffahcjemjliibgcafjpklgmbeknldi: D – JMaylin

İlgili konular