2012-03-09 76 views
0

我發現這個api http://code.google.com/chrome/extensions/tabs.html#method-insertCSS,但這是api在加載html文件時插入css文件,並且整個頁面重繪導致新的css規則隱藏一些這個頁面的區域。是否有任何想法讓我在頁面呈現之前插入css文件?我知道manifest.json可以解決這個問題,但是這個解決方案是靜態的,我不能通過編程來改變風格。通過編程改變chrome擴展的manifest.json中的user_contents信息

我想要的是,我可以動態分配CSS規則(CSS文件或CSS代碼片段)到符合我的條件,並不閃爍頁面的某個頁面。 Manifest.json規則是靜態的,並且這些規則在DOM呈現之前確實應用(通過使用run_at選項,我可以獲得良好的砂礫控制)。

回答

0

您應該在清單的content_scripts字段中嘗試runt_at:「document_start」

http://code.google.com/chrome/extensions/content_scripts.html

「的文件開始運行」注入你的代碼構建的DOM之前,這就是爲什麼我認爲這將正常工作。

我建議你試試這種方式只作爲測試:通過清單注入你的CSS,而不是通過程序注入。如果你獲得了你正在尋找的行爲,你可以調整你的清單以確保在構建DOM之前進行程序注入(.insertCSS(...))。

+0

是的,我已經通過清單測試了我的CSS,並且它使頁面呈現平滑。當我通過程序插入CSS時,頁面中的某些區域不會閃爍(顯示和隱藏)。 – dddkkk 2012-03-09 04:41:12

+0

我嘗試在manifest.json的content_script中追加這條規則{「matches」:「http:// */*」,「run_at」:「document_start」},chrome警告我這條規則需要少一些「js」或「css」 – dddkkk 2012-03-09 04:43:50

+0

是的,規則需要您想要自動插入的js o css。在編程方面,你必須編寫代碼來綁定你的監聽器,才能在構建DOM之前插入你的CSS。您不能暫停構建,您必須在文檔開始時啓動您的代碼。什麼事件激發你的代碼? – 2012-03-09 05:12:19

相關問題