可以't使用firefox扩展将本地css文件注入网页

can't inject a local css file into a webpage using firefox extension

本文关键字:css 文件 网页 注入 扩展 firefox 使用 可以      更新时间:2023-09-26

我读取了线程:

插入带有firefox的css导出

插入带有firefox扩展名的本地css文件

我做得很糟糕,比如:

如何操作firefox-extension-project-alocal-css-file-in-to--webpage

但我仍然无法将本地css文件注入网页。

我的js代码是:

    var fileref = gBrowser.contentDocument.createElement("link");
    fileref.setAttribute("rel", "stylesheet");
    fileref.setAttribute("type", "text/css");
    fileref.setAttribute("href", "resource://myExtension/skin/sty.css");
    gBrowser.contentDocument.getElementsByTagName("head")[0].appendChild(fileref);

当我输入"chrome://myExtension/skin/sty.css"在浏览器的位置栏中,我可以看到我的css文件,它很简单:

* {color:red !important;}

但由于某种原因,页面中的文本没有变红。

我在网页中查看了firebug,我在标题标签中看到了这个:

+ <link rel="stylesheet" type="text/css" href="resource://myExtension/skin/sty.css">

但是按下"+"符号并不能打开css文件内容。

我错过了什么?

谢谢!

您可以使用样式表服务

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 u = ios.newURI("chrome://myExtension/skin/sty.css", null, null);
if(sss.sheetRegistered(u, sss.USER_SHEET))
  sss.unregisterSheet(u, sss.USER_SHEET);