繁体   English   中英

如何在没有Window-object的firefox附加组件/扩展中插入jQuery?

[英]How to insert jQuery in a firefox Add-On / extension without the Window-object?

当我决定将Chrome扩展程序移植到Firefox时,我遇到了重大问题。 其中一个问题是jQuery不会自己安装在“Lib / main.js”文件中。 我得到的错误如下:

ReferenceError: window is not defined

似乎没有在Firefox附加组件的主方法中定义窗口对象。

我理解扩展本身不需要提交的窗口对象,因为它不代表html页面。 但这使我无法安装jQuery,而我想利用dom元素中的ajax方法和搜索算法。

我尝试了几种方法,但都失败了:

  • 从活动选项卡中检索窗口对象(无法发送window-element,因为sendMessage()方法是window-object的一部分)
  • document.createElement(失败,因为也没有文档对象)
  • 一些随机的东西也失败了

所以我的问题是,是否有人在Fi​​refox附加组件的主要方法中成功安装了jQuery?

Lib/main.js不是您放置应用程序代码的地方。 你会在那里放置初始化代码。 就像我们在chrome的manifest.json所做的那样。 看看我的firefox扩展的main.js 它看起来像这样:

exports.main = function() {};

var { MatchPattern } = require("match-pattern");

var pageMod = require("page-mod");
var data = require("self").data;

pageMod.PageMod({
    include: [/.*phpminiadmin.*/, /.*phpmyadmin.*/, /.*devadmin.*/],
    contentScriptWhen: 'ready',
    contentScriptFile: [data.url('jquery-1.7.2.min.js'),data.url('jquery-ui-1.8.20.custom.min.js'),data.url('bootstrap.min.js'),data.url('querysaver.js')]

});

pageMod允许你在页面的上下文中加载你的javascript,这当然是在页面自己的上下文中的一个单独的世界里。

您希望加载的脚本应驻留在与lib/ ../data

看看我的插件的文件夹结构。 https://github.com/juzerali/Don-t-lose-your-query/tree/master/Firefox-Addon 我记不清楚了,但你可能需要包含api-utils。

我发现使用Firefox的SDK很有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM