2011-12-05 30 views
2

我花了一整天的時間,這樣一個微不足道的東西,仍然不能 做這項工作。一個巨大的奇怪圖像出現,而不是我的圖標。如果我拿出toolbarbutton-1類,根本不會出現圖像。這裏是所有重要的東西:(這將是一個相當長的帖子...)xul - 沒有或錯誤的toolbarbutton圖像

我XUL只包含在toolbarpalette一個的ToolBarButton:

<?xml version="1.0"?> 
<?xml-stylesheet href="chrome://ytweaks/skin/style.css" type="text/ 
css"?> 
<overlay id="yTweaks" xmlns="http://www.mozilla.org/keymaster/ 
gatekeeper/there.is.only.xul"> 
    <script src="main.js" /> 
    <toolbarpalette id="BrowserToolbarPalette"> 
     <toolbarbutton id="ytweaks-main-button" class="toolbarbutton-1 
chromeclass-toolbar-additional" 
      type="menu" 
      label="yTweaks" 
      tooltiptext="yTweaks" 
      state="enabled"> 
     </toolbarbutton> 
    </toolbarpalette> 
</overlay> 

而CSS是一樣的那個在MDN教程:

#ytweaks-main-button { 
    list-style-image: url("chrome://ytweaks/skin/icon.large.png"); 
} 

toolbar[iconsize="small"] #ytweaks-main-button { 
    list-style-image: url("chrome://ytweaks/skin/icon.small.png"); 
} 

清單文件看起來是這樣的:

content ytweaks chrome/content/ 
overlay chrome://browser/content/browser.xul chrome://ytweaks/content/ui.xul 

skin ytweaks classic/1.0 skin/classic/ytweaks/ 
style chrome://global/content/customizeToolbar.xul chrome://ytweaks/skin/style.css 

而文件夾結構:

chrome 
|-- content 
| |-- ui.xul 
| |-- main.js 
|-- skin 
    |-- classic 
     |-- ytweaks 
      |-- icon.large.png 
      |-- icon.small.png 
      |-- style.css 

最後,結果是這樣的: enter image description here

完全不一樣的圖標,我做了。這是我的圖標應該出現(在 大一個):enter image description here


此外,我怎麼能調試這些東西嗎?例如,我如何瀏覽chrome註冊表 。如果我在Firefox中鍵入一個chrome URI,則不會發生任何事情。 除瀏覽器的主XUL文件加載另一個完整的 瀏覽器。

回答

2

事實證明,這是由於路徑無效,在這裏:

skin ytweaks classic/1.0 skin/classic/ytweaks/ 

..這應該是:

skin ytweaks classic/1.0 chrome/skin/classic/ytweaks/ 

回覆:調試。我會測試3件事:

  • 使用您知道必須匹配的最簡單規則,然後使用DOM檢查器檢查相關元素上的樣式,以查看您的規則是否匹配。如果他們不是你的樣式表由於某種原因沒有得到應用。
  • 看起來非常接近應用樣式表的行(在你的案例中,它是你的chrome.manifest中的style行)。我不知道你如何在這裏調試錯別字。
  • 檢查通過地址欄打開時,樣式表的chrome:// URL是否正常工作。它應該顯示你的CSS文件的文本。
    • 如果您在錯誤控制檯中收到No chrome package registered for chrome://aaa/skin/aaa.css消息,請在chrome中聲明您的skin聲明。清單未得到處理或'提供者'名稱(在我上面的示例中爲aaa)與「skin」後指定的'provider'名稱不匹配
    • 如果您收到一個內容錯誤頁面File not found. Firefox can't find the file at chrome://aaa/skin/bbb.css(如你的情況),這意味着skin聲明的路徑部分不正確。它應該是相對於chrome.manifest用於(IIRC和結尾用/)
+0

錯誤控制檯確實顯示一些XUL錯誤。但只有當我使用DOMi的「重新加載所有Chrome」時纔可以。我想,在啓動時使用重新啓動會被抹去。你做了我的一天(晚上),現在我的動力,實現的東西,回來了。 – SinistraD

0

基於關你上面給的信息,如果這是你的路徑ytweaks/skin/icon.small.png但你的文件夾結構

|-- ytweaks 
    |-- icon.large.png 
    |-- icon.small.png 
    |-- style.css 

然後它看起來像你對我是丟失在ytweaks一個skin子文件夾或你不應該有在你的圖像路徑中。

+0

有可能真正成爲一個問題,但是這不是這麼簡單。爲了處理多個皮膚或其他東西,你必須使用清單文件。這一行:「skin ytweaks classic/1.0 skin/classic/ytweaks /」覆蓋了路徑,但我不確定如何,這是我見過的其他附加組件上的效果。但對我不起作用。我比較我的附加組件是閃存塊,打開zip文件的xpi文件,然後jar也作爲zip你可以找到類似的結構。主要的區別是,雖然那個工作我的不是。 – SinistraD

相關問題