在没有sdk的情况下在firefox扩展中导入内容脚本

时间:2015-04-16 21:02:30

标签: javascript firefox add-on

我正在尝试开发一个没有sdk的无重启的firefox扩展,我希望能够操作页面的DOM,但是文档,content.document或unsafeWindow.document都返回undefined。

我的bootstrap.js代码:

Components.utils.import("resource://gre/modules/Services.jsm");
function startup(data,reason) {
    Components.utils.import("chrome://myextension/content/plugin-min.js");
}
function shutdown(data,reason) {
    Components.utils.unload("chrome://myextension/content/plugin-min.js");
}
function install(data,reason) { }
function uninstall(data,reason) { }

和我的plugin-min.js代码:

document.addEventListener('keydown',activate); // document undefined
content.document.addEventListener('keydown',activate); // content undefined
unsafeWindow.document.addEventListener('keydown',activate); // unsafeWindow undefined

Mozilla仅针对SDK用户发布了解决方案,而我所做的谷歌搜索只带来了这些SDK解决方案。 :/

但就我而言,有谁知道我错过了什么?

非常感谢。

1 个答案:

答案 0 :(得分:1)

主扩展程序脚本无法直接访问文档。您应该注入文档自己的内容脚本,并通过异步消息传递(端口对象)与它交换。

此外,您可以提供一个上下文脚本数组 - 在这种情况下,所有这些脚本都将被导入:

documentready

不确定加载订单,但在 [HttpPost] public ActionResult SearchForCompanies(FormCollection collection) { CompanySearch search = new CompanySearch(); search.CompanyList = CompanyData.GetList(); return this.RedirectToAction("SearchForCompanies", "Company", new {companySearch = search}); } evrything可访问之后。

更多阅读official documentation