2012-03-05 54 views
0

我在我的Firefox擴展中使用nsIStyleSheetService爲每個網頁註冊一個自定義樣式表。一切都對一些風格有很好的期待。nsIStyleSheetService CSS輸入

這是我的一種風格,不起作用。我已經添加了一個輸入/ textareas表單,但外觀不會改變。我嘗試添加重要的但它沒有工作。任何想法我做錯了什麼?

做一些測試後,我發現了以下樣式不起作用:

background-color:#f3f3ec; 
border:1px solid #d1d1cf; 
-moz-border-radius: 10px; 

奇怪的是,當我在頁面上直接加載CSS的工作,但通過使用nsIStyleSheetService它不」工作。我完全不知道發生了什麼。 :( 我已經嘗試過的顏色設置爲別的東西,但它沒有工作過

.MyToolTipWrapper input, 
.MyToolTipWrapper textarea { 
    background-color:#f3f3ec; 
    border:1px solid #d1d1cf; 
    font-family:Arial, Helvetica, sans-serif; 
    font-size:12px; 
    width:97%; 
    padding:5px; 
    -moz-border-radius: 10px; 
} 

我的init腳本:

var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); 
var uri = makeURI("resource://newtooltip/newtooltip.css"); 
if (sss.sheetRegistered(uri, sss.USER_SHEET)) 
    sss.unregisterSheet(uri, sss.USER_SHEET); 
if (on) 
    sss.loadAndRegisterSheet(uri, sss.USER_SHEET); 
+0

除了什麼?你的問題非常模糊。 – BoltClock 2012-03-05 08:01:45

+0

對不起。編輯它! – 2012-03-05 09:50:56

+0

@cscharr已經嘗試過它不起作用 – 2012-03-05 11:00:49

回答

1

CSS 2.1 defines用戶代理樣式表的優先級低於定義的樣式表通過網頁 - 除非使用!important關鍵字。在你的情況下,網頁可能已經爲background-color定義了一個值,它覆蓋了用戶樣式表中的設置。您應該使用!important以確保您的設置正常:

background-color:#f3f3ec !important; 
border:1px solid #d1d1cf !important; 
-moz-border-radius: 10px !important; 
+0

可悲的是我已經嘗試過,它也沒有工作。即使在只有一個輸入標籤的空白頁面上,它也不起作用。如果我將這些樣式內聯,它工作正常。這真的很奇怪,... – 2012-03-05 12:55:56

+0

可能沒有爲OP工作,但在我的情況下工作得很好 - 謝謝。 – rgardler 2012-10-09 16:12:42

0

如果使用USER_SHEET本網站的CSS規則有較高 嘗試使用AGENT_SHEET,以便您的CSS獲得更高的優先級

+0

你錯了,請參閱http://www.w3.org/TR/CSS2/cascade.html#cascading-order。用戶代理樣式表實際上具有可能的最低優先級。此外,擴展通常不應該使用它們(它們適用於內部節點,如果不小心可能導致崩潰)。 – 2012-03-05 12:29:37