FireFox AddOn SDK 关闭当前选项卡
FireFox AddOn SDK close current tab
我正在使用 Add-On SDK 为 FireFox 移植 Chrome 扩展。我在文档开头使用 require("sdk/page-mod")
到 运行 内容脚本。
在代码中,如果满足某些条件,我需要关闭当前选项卡。在 Chrome 中,我可以向 background.js 文件发送消息以关闭当前选项卡,但我无法为 Firefox 解决这个问题。
window.close()
非常不可靠,我需要想办法从我的内容脚本中调用 main.js 文件中的函数。
感谢您的帮助。
编辑:
下面是我的 Chrome 代码,我需要将其移植到 FF AddOn SDK(FF 扩展)。
//in the content.js file
function closeCurrTab() {
chrome.runtime.sendMessage({action: "closeTab"}, function() {});
}
//below in the background.js file
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
switch (request.action) {
case 'closeTab':
try {
chrome.tabs.getSelected(function(tab) {removeTab(tab.id);});
} catch (e) {
alert(e);
}
break;
}
}
);
function removeTab(tabId) {
try {
chrome.tabs.remove(tabId, function() {});
} catch (e) {
alert(e);
}
}
这将关闭当前选项卡:
require("sdk/tabs").activeTab.close();
这是一个扩展示例,它实现了一个关闭当前选项卡的工具栏按钮(愚蠢的示例,我知道):
var ActionButton = require("sdk/ui/button/action").ActionButton;
var button = ActionButton({
id: "my-button-id",
label: "Close this tab",
icon: {
"16": "chrome://mozapps/skin/extensions/extensionGeneric.png"
},
onClick: function(state) {
require('sdk/tabs').activeTab.close();
}
});
有关详细信息,请参阅 documentation for the tabs module。
在内容脚本中:
self.port.emit("close-tab");
在main.js
PageMod({
include: "*",
contentScriptFile: "./content-script.js",
onAttach: function(worker) {
worker.port.on("close-tab", function() {
tabs.activeTab.close();
});
}
});
如果您正在开发 firefox 的扩展,以下内容可能会有所帮助:
function onError(error) {
console.log(`Error: ${error}`);
}
function onRemoved() {
console.log(`Removed`);
}
function closeTabs(tabIds) {
removing = browser.tabs.remove(tabIds);
removing.then(onRemoved, onError);
}
var querying = browser.tabs.query({currentWindow: true});
querying.than(closeTabs, onError);
我正在使用 Add-On SDK 为 FireFox 移植 Chrome 扩展。我在文档开头使用 require("sdk/page-mod")
到 运行 内容脚本。
在代码中,如果满足某些条件,我需要关闭当前选项卡。在 Chrome 中,我可以向 background.js 文件发送消息以关闭当前选项卡,但我无法为 Firefox 解决这个问题。
window.close()
非常不可靠,我需要想办法从我的内容脚本中调用 main.js 文件中的函数。
感谢您的帮助。
编辑: 下面是我的 Chrome 代码,我需要将其移植到 FF AddOn SDK(FF 扩展)。
//in the content.js file
function closeCurrTab() {
chrome.runtime.sendMessage({action: "closeTab"}, function() {});
}
//below in the background.js file
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
switch (request.action) {
case 'closeTab':
try {
chrome.tabs.getSelected(function(tab) {removeTab(tab.id);});
} catch (e) {
alert(e);
}
break;
}
}
);
function removeTab(tabId) {
try {
chrome.tabs.remove(tabId, function() {});
} catch (e) {
alert(e);
}
}
这将关闭当前选项卡:
require("sdk/tabs").activeTab.close();
这是一个扩展示例,它实现了一个关闭当前选项卡的工具栏按钮(愚蠢的示例,我知道):
var ActionButton = require("sdk/ui/button/action").ActionButton;
var button = ActionButton({
id: "my-button-id",
label: "Close this tab",
icon: {
"16": "chrome://mozapps/skin/extensions/extensionGeneric.png"
},
onClick: function(state) {
require('sdk/tabs').activeTab.close();
}
});
有关详细信息,请参阅 documentation for the tabs module。
在内容脚本中:
self.port.emit("close-tab");
在main.js
PageMod({
include: "*",
contentScriptFile: "./content-script.js",
onAttach: function(worker) {
worker.port.on("close-tab", function() {
tabs.activeTab.close();
});
}
});
如果您正在开发 firefox 的扩展,以下内容可能会有所帮助:
function onError(error) {
console.log(`Error: ${error}`);
}
function onRemoved() {
console.log(`Removed`);
}
function closeTabs(tabIds) {
removing = browser.tabs.remove(tabIds);
removing.then(onRemoved, onError);
}
var querying = browser.tabs.query({currentWindow: true});
querying.than(closeTabs, onError);