2011-08-03 33 views
0

所以我創建了一個用戶點擊的窗口小部件,它打開了一個Panel,我有幾個關於面板的問題。 如何設計面板邊框,背景色等。?我在它的contentURL中包含一個HTML文件,我可以添加CSS來改變它嗎?如果是的話,我如何通過CSS選擇它?Firefox插件的造型面板

我也想添加一個關閉按鈕,並保持面板總是打開,除非他們點擊關閉按鈕。

關於第二個想法,對於附加程序,我試圖編程它可能會更好,如果我製作一個窗口,是一個很漂亮的窗口,所以我可以讓它看起來更酷?

感謝您的任何幫助。

回答

0

我不認爲你可以風格的面板邊框。面板邊框樣式取決於操作系統,您無法觸摸它們。您只能真正影響面板的內部區域,您可以在面板中獲得一個iframe,您可以使用它。例如。改變背景的面板可以包含:

<style type="text/css"> 
    html 
    { 
    background-color: red; 
    } 
</style> 
0

你不能,該面板是不是一個真正的HTML對象,但有一個iframe或HTML裏面XUL窗口。

我相信,因爲火狐30,你可以訪問這個對象,你可以閱讀:

Avoid panel to autoHide in Firefox extension

當然它是一種黑客攻擊,看起來Mozilla是不是真正的「開放」的^^

+0

Mozilla是開放的,但SDK已經被製作成谷歌Chrome瀏覽器,所以它是開放的,但不是「免費的」。你必須破解它才能完成大量工作。儘管谷歌瀏覽器其實並沒有真正開放。 – Noitidart

+0

這個SDK https://github.com/mozilla/addon-sdk? –

0

我能夠修改面板的邊框:如果你知道你的ID的面板只是這樣做

/*run this first*/ 
var win = Services.wm.getMostRecentWindow('navigator:browser'); 
var panel = win.document.createElement('panel'); 
var screen = Services.appShell.hiddenDOMWindow.screen; 
var props = { 
    noautohide: true, 
    noautofocus: false, 
    level: 'top', 
    style: 'padding:15px; margin:0; width:150px; height:200px; background-color:steelblue;border-radius:15px' 
} 
for (var p in props) { 
    panel.setAttribute(p, props[p]); 
} 


win.document.querySelector('#mainPopupSet').appendChild(panel); 


panel.addEventListener('dblclick', function() { 
    panel.parentNode.removeChild(panel) 
}, false); 
panel.openPopup(null, 'overlap', screen.availLeft, screen.availTop); 

所以:

var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); 

var css = ''; 
css += '#YourPanelIdHere { border-radius:15px; opacity:.5; border:1px solid red; }'; 
var cssEnc = encodeURIComponent(css); 
    var newURIParam = { 
     aURL: 'data:text/css,' + cssEnc, 
     aOriginCharset: null, 
     aBaseURI: null 
} 
var cssUri = Services.io.newURI(newURIParam.aURL, newURIParam.aOriginCharset, newURIParam.aBaseURI); 
sss.loadAndRegisterSheet(cssUri, sss.USER_SHEET); 
    //sss.unregisterSheet(cssUri, sss.USER_SHEET); 

這將樣式您的面板。你不必在樣式表中使用面板ID,只需要面板上的任何東西就可以完成。