我无法将复杂的 Chrome 扩展程序转换为 Firefox 插件。在 Chrome 扩展中,作者使用了一些 Chrome API,例如
chrome.extension.sendMessage
chrome.browserAction.setIcon
webkitNotifications.createNotification
chrome.tabs.sendMessage
chrome.extension.onMessage.addListener
chrome.browserAction.onClicked.addListener
chrome.privacy.services.autofillEnabled.get
chrome.runtime.onInstalled.addListener
chrome.tabs.query
localStorage
等等。
我不知道如何在 Firefox 附加代码中实现这些方法。其中一些 API 可以通过回调函数调用。例如:
chrome.extension.sendMessage ( {
type: "get.identitieswithurl",
originUrl: lgmIdentitySave.originUrl,
actionUrl: lgmIdentitySave.actionUrl
},
function (resultIdentities) {
if(resultIdentities != null && resultIdentities.length > 0) {
lgmIdentitiesPage = resultIdentities;
fillFormsWithCredential(resultIdentities[0]);
if(resultIdentities.length > 1 && lgmSuggestionSelectIdDismissed == false) {
showSelectIdentitySuggestionBar();
}
}
}
);
从这个问题,我知道 Firefox 代码可以写成
// main add-on script
pageMod.PageMod({
include: "*.org",
contentScriptFile: self.data.url("my-script.js"),
// Send the content script a message inside onAttach
onAttach: function (worker) {
worker.port.emit("replacePage", "Page matches ruleset");
}
});
但是我仍然不知道如何添加回调函数。