0
我試圖將Chrome擴展移植到Firefox。我的Chrome擴展程序使用後臺頁面來啓動插件啓動時的一個插接連接。然後在內容頁面中,我將事件發送到背景頁面以通過socketio發出事件。所以我有1個連接,它被許多選項卡使用。Firefox/Chrome插件socketio
有沒有可能在FF中創建這樣的東西?可能是爲插件創建一個共享工作者,並從標籤與工作人員進行交流?有什麼建議麼? 在此先感謝。
我試圖將Chrome擴展移植到Firefox。我的Chrome擴展程序使用後臺頁面來啓動插件啓動時的一個插接連接。然後在內容頁面中,我將事件發送到背景頁面以通過socketio發出事件。所以我有1個連接,它被許多選項卡使用。Firefox/Chrome插件socketio
有沒有可能在FF中創建這樣的東西?可能是爲插件創建一個共享工作者,並從標籤與工作人員進行交流?有什麼建議麼? 在此先感謝。
您可以使用SDK的PageWorker api在Firefox中實現類似於背景頁面的內容。這裏是一個真正簡單的例子:
index.js
var data = require("sdk/self").data;
var page = require("sdk/page-worker");
var re = new RegExp("^https://www.google.*");
let { ActionButton } = require("sdk/ui/button/action");
let button = ActionButton({
id: "my-button-id",
label: "Button Label",
icon: {
"16": "chrome://mozapps/skin/extensions/extensionGeneric.png",
"32": "chrome://mozapps/skin/extensions/extensionGeneric.png"
},
onClick: function(state) {
main();
}
});
var worker;
function main() {
let contentURL = 'https://www.google.ca/';
if (worker) {
worker.contentURL = contentURL;
}
worker = page.Page({
include: re,
contentURL: contentURL,
contentScriptWhen: "ready",
contentScriptFile: data.url('worker.js')
});
worker.port.on('fromWorker', (m) => {
console.log("got message", m);
worker.port.emit('toWorker', true)
});
}
worker.js
console.log("worker> attached...");
self.port.on('toWorker', function(message) {
console.log("worker>", message);
});
self.port.emit("fromWorker", "message from content worker: "+ [document.location, document.title].join(', '));
如果你想與加載到網頁中的腳本進行交互,你」我們需要通過postMessage,see these docs for more help,通過內容腳本代理進入頁面。
我已經找到了這個解決方案,但謝謝你的回答 – croshim 2015-05-02 14:18:44