2012-07-18 45 views
7

我正在研究Firefox扩展,我需要从内容脚本中将JavaScript注入页面。在我的Chrome扩展中,我做了以下操作:如何引用Firefox扩展的数据目录中的文件?

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扩展内容脚本中引用js文件(我曾使用Chrome的chrome.extension.getURL())?

回答

10

如果您在基于SDK-插件,你需要和使用“数据”助手从“自我”的对象main.js是:

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

+0

这是在主脚本权不是在内容中?或者我错了? – PeeHaa 2012-07-19 07:27:41

+0

这是在主脚本中,'main.js',是的。 – canuckistani 2012-07-19 07:29:41

+0

“如何在firefox插件** contentscript **中引用js文件”。这是可能的还是我看错了方式? – PeeHaa 2012-07-19 07:30:31

2

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

这可能是为什么这行不是为我工作:

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

我只是不得不重写了一点:

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