javascript - 无法使用 firefox 扩展将本地 css 文件注入(inject)网页

标签 javascript css firefox-addon

我读了线程:

inserting-css-with-a-firefox-extension

inserting-local-css-file-with-firefox-extension

我完全按照以下方式做了:

how-can-a-firefox-extension-inject-a-local-css-file-into-a-webpage

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

我的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 ,我在 head 标签中看到了这个:

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

关于javascript - 无法使用 firefox 扩展将本地 css 文件注入(inject)网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9129700/

相关文章:

javascript - 使用对象数组解构对象

javascript - 如何在选择及其父 div 及其邻居按钮上切换禁用

google-chrome-extension - 将Google Chrome扩展程序转换为Firefox或Safari扩展程序

php - 将 php 变量传递到 JavaScript 时出现问题

javascript - 砌体无法加载...元素不会重新对齐,直到我调整窗口大小

html - HTML CSS 中的卡片翻转动画在 IE 中不起作用

jquery - 在设备方向上更改图像 jquery-mobile

javascript - Jquery Mobile 中的按钮自动调整大小

javascript - 如何为 nsIBrowserSearchService 添加观察者

firefox - 在 Firefox 插件中使用 simple-prefs 模块