簡體   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