2016-11-23 16 views
2

私は拡張子でやりたいためにいくつかの説明Chrome拡張機能:注入後にコンテンツスクリプトCSSを削除するにはどうすればよいですか?

"content_scripts": [{ 
    "matches": ["*://*.youtube.com/*"], 
    "css": ["styles.css"], 
    "js": ["jquery-3.1.1.min.js", "content.js"] 
}], 

content_scripts(manifest.jsonを)から注入されたCSSファイルstyles.cssを削除する必要があります。

最初にstyles.cssが読み込まれ、ページのコードが変更されます。できます。

次に、ユーザーはボタンをクリックして内線をオフにします。できます。

ただし、styles.cssは削除する必要があります。それは動作しません。

ユーザーが延長を有効にしたい場合は、styles.cssをもう一度追加する必要があります。

var style = document.createElement('link'); 
style.rel = 'stylesheet'; 
style.type = 'text/css'; 
style.href = chrome.extension.getURL('myStyles.css'); 
(document.head||document.documentElement).appendChild(style); 

拡張子を始めるされたときに、そのページが数ミリ秒間点滅しますので、それは、うまく動作しませんでした:私はこのようにそれを解決しようとした

+0

質問が閉じます。私は退屈です。ありがとう。 – Lestoroer

+0

「質問は閉じていますか?」というのは、(解決策を見つけた以外の理由で)気にしなくなった、または問題の解決策を見つけたことなどが原因で、このトピックに関する疑問がなくなったということですか?問題の解決策を見つけたら、この質問への回答を投稿する必要があります。 [自己回答の質問が推奨されます](http://stackoverflow.com/help/self-answer)。 – Makyen

+0

だから。はい。私はちょっと後で解決策を教えてくれます:) – Lestoroer

答えて

2

私はこの問題の解決法を見出しました。

manifest.jsonを

manifest.json 

    "content_scripts": [{ 
    "matches": ["*://*.youtube.com/*"], 
    "js": ["jquery-3.1.1.min.js", "content.js"], 
    "run_at" : "document_start" // It runs content.js first until page loads 
    }], 

    "web_accessible_resources": ["styles.css"] // It provides styles.css for use in content.js 

content.jsのみHTMLでfile.css(提供されたStyles.cssを)をロード

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

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

content.jsページが読み込まれるまでタグを付けてください

+0

"Xのようなコードを示唆しないでください"とあなたのコードは 'run_at'の間に本当に違いがありますか? – Xan

+1

はい。最初は '' run_at ''を使ってコードを実行しました: "document_end" '(これはデフォルトです)、ちらつきが起こりました。そして、私は '' run_at '': "document_start"という言葉を見つけました。ちょうど私は最近、私はGoogle APIで会ったことは知らなかった。 – Lestoroer

+0

これを反映するように質問を更新しました。私はあなたの答えをアップアップします。 – Xan

関連する問題