javascript - 如何关闭使用 browser.windows.create() 打开的窗口?

标签 javascript firefox-addon-webextensions

我找不到解决此问题的任何问题/答案。抱歉,如果我错过了什么。

我刚刚开始使用 WebExtensions。我有一个窗体显示在我使用 windows.create();background.js 脚本中打开的窗口中。我不知道如何关闭该窗口(除了手动单击关闭框)。窗口已创建并正确显示我的表单。我什至可以提交表格。但我无法关闭 window 。我什至尝试将内容脚本注入(inject)表单页面 - 我也无法从那里关闭它。我尝试将处理程序附加到按钮的 click 事件,但没有成功。

据我了解,只有创建窗口的脚本才能关闭它。但我无法弄清楚,或者通过在线搜索找到如何在我的 browserAction 后台脚本(这是创建窗口的位置)中执行此操作?

我在 Debian 上运行 Firefox 51。

这是创建窗口的代码。

background.js

var formUrl = 'http://example.com/api/test'
chrome.browserAction.onClicked.addListener(
  function(tab)
  {
    chrome.tabs.query({"active": true, "currentWindow": true}, function(tabs) 
      { 
      var target = tabs[0].url;
      if (target.substr(0,4) == 'http')
      {
        var encUrl = escape(target);
        var newUrl = formUrl + '?default=' + encUrl;
        w = chrome.windows.create({
          url: newUrl,
          width: 775,
          height: 350,
          type: 'popup'
        });
      }
      else
      {
        console.log("Only http(s) pages can be processed at this time.");
      }
    });
  }
);

最佳答案

API 调用 windows.remove()专门用于关闭窗口。您将需要 windowId,可通过 id property 获取。 windows.Window内传递给 windows.create() 的回调/解析函数的对象.

您不需要从打开窗口的同一脚本中调用windows.remove()。任何有权访问该 API 的脚本都可以关闭该窗口。

关于javascript - 如何关闭使用 browser.windows.create() 打开的窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42585856/

相关文章:

javascript - 从 zip 文件在 AWS 中创建 lambda 函数

javascript - 如何正确使用 ES6 进行柯里化(Currying)?

javascript - Firefox WebExtensions API 如何对当前选项卡网站进行 AJAX 调用

javascript - 将 WebExtension 从 Chrome 移植到 Firefox?

firefox-addon-webextensions - 使用 web-ext 进行不同的开发和构建配置

javascript - 重新渲染 React props.children

javascript - 如何设置 VS2015 在我搞乱 JavaScript 时抛出错误?

javascript - 如何引用选定的单选按钮显示元素?使用纯 JavaScript

javascript - 使用 chrome.tabs 与 browser.tabs 来实现浏览器兼容性

javascript - Firefox WebExtensions WebRequest 示例不工作