Firefox addon Firefox插件的样式面板

Firefox addon Firefox插件的样式面板,firefox-addon,Firefox Addon,所以我创建了一个用户点击的小部件,它打开了一个面板,我有几个关于面板的问题。 如何设置面板边框、背景色等的样式。。?我在它的contentURL中包含了一个HTML文件,我可以添加CSS来修改它吗?如果是,我如何通过CSS选择它 我还想添加一个关闭按钮,并保持面板始终打开,除非他们单击关闭按钮 再想一想,对于我正在尝试编程的附加组件,如果我制作一个窗口可能会更好,那么一个窗口是否具有很好的样式,这样我就可以让它看起来更酷 谢谢您的帮助。我认为您无法设置面板边框的样式。面板边框样式取决于操作系统,

所以我创建了一个用户点击的小部件,它打开了一个面板,我有几个关于面板的问题。 如何设置面板边框、背景色等的样式。。?我在它的contentURL中包含了一个HTML文件,我可以添加CSS来修改它吗?如果是,我如何通过CSS选择它

我还想添加一个关闭按钮,并保持面板始终打开,除非他们单击关闭按钮

再想一想,对于我正在尝试编程的附加组件,如果我制作一个窗口可能会更好,那么一个窗口是否具有很好的样式,这样我就可以让它看起来更酷


谢谢您的帮助。

我认为您无法设置面板边框的样式。面板边框样式取决于操作系统,您不能触摸它们。您只能真正影响面板的内部区域,实际上,您可以在面板内部使用iframe。例如,要更改背景,您的面板可以包含:

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

不能,面板不是一个真正的HTML对象,而是一个内部带有iframe或HTML的XUL窗口

我相信,由于Firefox 30可以访问此对象,您可以阅读:


当然这是一种黑客行为,看起来Mozilla没有真正打开^ ^

我能够修改面板的边框:

/*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);
因此,如果您知道id的面板,请执行以下操作:

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);

这将为您的面板设置样式。您不必在样式表中使用panel id,只需针对您的面板执行任何操作。

Mozilla是开放的,但SDK是Google Chrome'ish版的,因此它是开放的,简化了,但不是免费的。你必须把它砍掉才能完成很多事情。谷歌Chrome实际上并没有在second上真正开放。