javascript - FireFox AddOn SDK 关闭当前选项卡

标签 javascript firefox firefox-addon firefox-addon-sdk

我正在使用 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);
  }
}

最佳答案

在内容脚本中:

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();
    });
  }
});

关于javascript - FireFox AddOn SDK 关闭当前选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29341696/

相关文章:

javascript - React 渲染文本比样式更改慢 - 警报组件

css - Firefox iframe 主体与 iframe 的高度不匹配

jquery - XSLT 破坏 Firefox 中的 jQuery/Prototype 脚本

javascript - 在 Firefox 扩展中复制到剪贴板不起作用

firefox - Firefox 中的默认剪贴簿保存位置

javascript - 单元测试 Angular 时 "angualar.module"和 "module"之间的区别

javascript - 为什么在尝试使用 stringify 将数组转换为 JSON 字符串时出现方括号

javascript - 使 CSS 旋转中的过渡转为最短距离

firefox - 从 Firefox 扩展设置 HTTP header

javascript - Firefox 附加组件中使用 XMLHttpRequest 拒绝 Referer、Connection 和 Accept-Encoding