2013-08-30 10 views
9

私はchrome.tabs.insertCSS(null, {file: "style.css"});を使ってページにCSSファイルを挿入しても問題ありません。挿入されたCSSファイルを削除するにはどうすればよいですか?

  • ただし、ファイルを削除する方法はありますか?
  • また、style.cssという名前の別のファイルを挿入すると、最初のファイルが上書きされますか?
  • ところで、注入されたCSSファイルはどこで見ることができますか?スクリプトはクロム開発ツールの「ソース/コンテンツスクリプト」で見ることができますが、CSSファイルは見つかりません。
+0

私は既にあなたの3番目の質問、なぜ注入されたCSSはdevのツール[ここ]で表示されないかについて尋ねていた(http://stackoverflow.com/questions/28402524/how-to-view-css-stylesheet-injected) -by-a-google-chrome-extension-using-dev-tools?noredirect = 1#comment45224324_28402524)私がこれを見つけたとき。誰もがここで答えようとしたように見えないので、私はそのまま私のままにします。 – foobarbecue

答えて

6

私はこの質問の文脈が何であるか分かりませんが、特定の方法でページの特定の要素をハイライトし、そのカスタムハイライトを切り替えることができるように思えます。あなたが実際にCSSファイルを削除するか、単に同じ名前のファイルを追加することによって、それを消去することはできませんので

を(むしろスタイリング要素よりも、あなたの拡張機能が作成し)、私は次のことをお勧め:

  • はあなたを包みますbody.JMaylinCustomStyles
  • JMaylinCustomStylesクラスをbody要素に追加または削除するにはJavaScriptを使用してください。
  • はメリットは、それはあなたがあなたのカスタムスタイルを上書きする方法を見つけ出す必要がないこと、あなたが持っているものの上に多くの仕事を追加していないということです何のステップ3

ありません2番目のスタイルシート(それは常に非常に迷惑でエラーを起こす可能性が高い)、さらにCSS specificityのビットを取得して、スタイルを適用する可能性が高くなります。あなたは文字通り、ファイルの先頭にbody.JMaylinCustomStyles {を追加し、下部の}することができますので、あなたのスタイルを「ラップ」するための最良の方法は、SassまたはLESSを用いることであろうことを

は注意してください。

+0

Timothéeありがとう、私はそれをするつもりだ* – JMaylin

2

CSSファイルを削除するには、no API https://developer.chrome.com/extensions/tabs.html

はありませんあなたの最善の策は、おそらくあなたが挿入され、最初のファイルからすべてのCSSの設定を置き換えます別のファイルを挿入します。

+1

私は空の 'スタイルを注入しようとします。css'それは前のものを上書きしません – JMaylin

+1

すべてのオプションを明示的に上書きする必要があるかもしれません。たとえば、背景色を青に変更した場合は、背景色を白に戻す必要があります。 –

+0

これはオプションです。しかし、私の場合は、デフォルト値を知っているとは思わないので動作しません。 – JMaylin

5

私はちょうど同じ問題に立ち向かい、私の解決策を分かち合うと思った。私はそのようにようにCSSをロードまたはアンロードされますコンテンツスクリプトを呼んでいる:

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のデータに基づいて、コンテンツスクリプトでもあります。だからあなたがする必要があるのは、スクリプトを注入することです。それはCSSを追加/削除します。

私のケースは実際はちょっと複雑なので、私はいつもコンテンツスクリプトを読み込み、メッセージを送信してCSSをロードまたはアンロードします。しかし、これは、すべてのページのロード時にファイルをロードするオーバーヘッドがあります。

+0

Davidさんに感謝します。それは面白い解決策です – 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:D – JMaylin

関連する問題