7

我正在开发 Firefox 扩展,我需要将 JavaScript 从内容脚本注入页面。在我的 Chrome 扩展程序中,我执行了以下操作:

this.initializeJplayerSupport = function() {
  var script = document.createElement('script');
  script.setAttribute('type', 'application/javascript');
  script.setAttribute('src', chrome.extension.getURL('js/custom-jplayer.js'));
  document.head.appendChild(script);
}

该文件位于我的数据目录中。如何在 firefox 扩展内容脚本(我曾用于chrome.extension.getURL()Chrome)中引用 js 文件?

4

2 回答 2

10

如果您在基于 SDK 的附加组件的 main.js 中,则需要并使用来自“self”对象的“data”助手:

var data = require('self').data;

console.log(data.url('somefile.js')); // prints the resource uri to the file.

欲了解更多信息:

https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/self#data

获得此资源 uri 后,您可以使用 self.postMessage 或 self.port.emit 将其提供给内容脚本:

https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts

于 2012-07-19T07:26:09.377 回答
2

看起来从 Firefox 38 开始,cfx已被替换为jpm.

这可能就是为什么这条线对我不起作用:

var data = require('self').data;

我只需要稍微重写一下:

var data = require('sdk/self').data;
于 2015-07-13T14:05:39.080 回答