为Firefox bootstrap插件添加样式表
Adding StyleSheets to Firefox Bootstrapped Addon
使用样式表服务
上述文件还规定:
loadAndRegisterSheet失败,如果CSS包含#id。'#'必须是百分比编码,详见bug 659650。
袋子报告是在2011-05-25做的。它仍然是一个bug还是已经被解决了?
还有另一种添加CSS的方法,但那是每个窗口,我更喜欢把这个排序。
更新:
下面是样式表
#rpnethelper-separator2:last-child { display: none; }
#rpnethelper-menuitem {
list-style-image: url('icon16.png');
}
这是实际的代码(加上添加的控制台调用)
register: function(css) {
let sss = Components.classes['@mozilla.org/content/style-sheet-service;1']
.getService(Components.interfaces.nsIStyleSheetService);
let cssURI = Services.io.newURI(css, null, null);
sss.loadAndRegisterSheet(cssURI, sss.USER_SHEET);
},
我尝试了try{} catch{}
,我没有得到任何错误。
如何/在哪里可以看到USER_SHEET
?
现在,我将使用内联样式(不支持伪类),但我仍然想解决这个问题。
最终更新:
由于某种原因,不能与USER_SHEET
一起工作的代码可以与AUTHOR_SHEET
一起工作
有趣的是,在所有这些之后,我决定不值得为一个伪类进行额外的处理,所以我选择了(简单的)内联样式
您忘记指定正确的名称空间。将以下内容添加到工作表中作为第一行。
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
已链接的文档状态:
使用此服务添加的样式表将同时应用于chrome和content文档。如果您希望将样式表应用于XUL文档,请记住声明正确的名称空间。
同样,如果你的目标是Firefox 18及更高版本(实际上,支持更早的版本没有任何好处,因为这些版本不受支持,并且包含已知的安全漏洞,所以用户不应该使用它们),你应该考虑使用nsIDOMWindowUtils.loadSheet
。这只会将工作表加载到实际的窗口中,而不是将其全局应用到包括网站在内的所有窗口。
if (window instanceof Ci.nsIInterfaceRequestor) {
let winUtils = window.getInterface(Ci.nsIDOMWindowUtils);
let uri = Services.io.newURI(..., null, null);
winUtils.loadSheet(uri, Ci.nsIDOMWindowUtils.AUTHOR_SHEET);
// Remove with winUtils.removeSheet() again on shutdown
}
Edit大多数情况下您都需要使用AUTHOR_SHEET
(无论是样式表服务还是窗口工具)。这与覆盖层中的xml-stylesheet
更等效。
loadAndRegisterSheet fails if CSS contains #id. '#' must be percent-encoded, details see bug 659650.
袋子报告是在2011-05-25做的。它仍然是一个bug还是已经被解决了?
该错误报告仅应用data:
uri。此外,该错误报告是无效的,#
在URI中具有特殊含义,因此当它直接成为URI的一部分时,您必须对其进行编码(就像data:
URI的情况一样)。如果你注册一个普通的chrome:
/resource:
/file:
/http:
URI,你不需要特殊的编码。
- 无法在运行时将CSS样式添加到元素中
- 将样式添加到文本区域的特定行
- 需要从父页面使用 javascript 将 css 样式添加到 iframe
- 通过javascript将CSS样式添加到DOM元素
- Javascript:将内联样式添加到页面中具有特定计算样式属性的元素
- Javascript - 使用类将 css 样式添加到元素中
- 将 css 样式添加到 Javascript 中使用的图像中
- 如何将样式添加到圆环图c3.js的标题中
- 如何将样式添加到span like.attr('style','width:newWidth
- 使用下拉列表将样式添加到D3路径
- HTML输入AJAX更新-使用Bootstrap将样式添加到输入字段
- 将Class添加到具有任意2个类的所有表行,并将另一个样式添加到具有任何3个类的全部表行
- 如何将css样式添加到javascript生成的HTML中
- 将css样式添加到动态添加的<表单>java脚本中的元素
- 如何将结构样式添加到jquery插件中
- 为HTML样式添加隐藏/显示功能(不在CSS文档中)
- 不能将jquery UI按钮样式添加到所有按钮Codeigniter
- 将css样式添加到javascript中
- jquery:为现有样式添加样式属性
- 如何在 AngularJS 中展开表格以手风琴样式添加更多信息