我正在编写一个Firefox扩展,需要将css文件注入到网页中.css文件与扩展程序捆绑在一起,因此我可以使用chrome网址访问它
chrome://extensionid/content/skin/style.css
Run Code Online (Sandbox Code Playgroud)
我正在尝试在加载页面时注入这样的css:
var fileref = document.createElement("link");
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", "chrome://extensionid/content/skin/style.css");
document.getElementsByTagName("head")[0].appendChild(fileref);
Run Code Online (Sandbox Code Playgroud)
但是,当我检查link我创建的元素时,没有加载css并且Firebug显示"Filtered chrome url"消息而不是文件内容.如果我尝试从外部服务器加载此css文件,一切都很好.
有没有办法加载与扩展捆绑的css文件?
我正在构建一个firefox扩展,需要在doc中插入一些元素和css.
我尝试过关注Firefox扩展如何将本地css文件注入网页?并使用Firefox扩展插入CSS,但没有运气.
我知道我错过了一些愚蠢的观点,但我无法弄清楚它是什么,如果有人可以指出我,我会非常感激.
继承人我的chrome.manifest:
content helloworld content/
overlay chrome://browser/content/browser.xul chrome://helloworld/content/overlay.xul
locale helloworld en-US locale/en-US/
skin helloworld classic/1.0 skin/
Run Code Online (Sandbox Code Playgroud)
和我的overlay.js:
var fileref = gBrowser.contentDocument.createElement("link");
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", "resource://helloworld/skin/global.css");
gBrowser.contentDocument.getElementsByTagName("head")[0].appendChild(fileref);
Run Code Online (Sandbox Code Playgroud)
我甚至在我的overlay.js中尝试过这个
var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
.getService(Components.interfaces.nsIStyleSheetService);
var ios = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var uri = ios.newURI(url, null, null);
sss.loadAndRegisterSheet(uri, sss.USER_SHEET);
Run Code Online (Sandbox Code Playgroud)
再没有运气.
我错过了什么?我真的想不通.