如何关闭使用 browser.windows.create() 打开的 window?
How to close a window opened using browser.windows.create()?
我找不到任何解决此问题的 questions/answers。对不起,如果我错过了什么。
我刚刚开始使用 WebExtensions。我有一个显示在 window 中的表单,我使用 windows.create();
在我的 background.js 脚本中打开它。我不知道如何关闭 window(除了手动单击关闭框)。 window 已创建并正确显示我的表单。我什至可以提交表格。但是我无法让 window 关闭。我什至尝试将内容脚本注入表单页面 - 我也无法从那里关闭它。我尝试将处理程序附加到按钮的 click
事件,但没有成功。
据我了解,只有创建 window 的脚本才能关闭它。但是我无法弄清楚,或者通过在线搜索找到,我将如何在我的 browserAction
后台脚本(这是创建 window 的地方)中做到这一点?
我是 运行 Debian 上的 Firefox 51。
这是创建 window.
的代码
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()
is specifically for closing a window. You will need the windowId
, which is available as the id
property within the windows.Window
Object which is passed to the callback/resolve function for windows.create()
。
您不需要从打开 window 的同一个脚本中调用 windows.remove()
。任何有权访问 API 的脚本都可以关闭 window.
您可以通过以下方式从 "dismiss" 按钮中删除由 Firefox 中的扩展程序创建的 window:
GetEl('dismiss').addEventListener('click',function(e)
{
browser.windows.getCurrent().then(F2);
});
function F2(info)
{
return browser.windows.remove(info.id);
} // F2
(GetEl returns 给定 id 字符串的元素节点。)
我找不到任何解决此问题的 questions/answers。对不起,如果我错过了什么。
我刚刚开始使用 WebExtensions。我有一个显示在 window 中的表单,我使用 windows.create();
在我的 background.js 脚本中打开它。我不知道如何关闭 window(除了手动单击关闭框)。 window 已创建并正确显示我的表单。我什至可以提交表格。但是我无法让 window 关闭。我什至尝试将内容脚本注入表单页面 - 我也无法从那里关闭它。我尝试将处理程序附加到按钮的 click
事件,但没有成功。
据我了解,只有创建 window 的脚本才能关闭它。但是我无法弄清楚,或者通过在线搜索找到,我将如何在我的 browserAction
后台脚本(这是创建 window 的地方)中做到这一点?
我是 运行 Debian 上的 Firefox 51。
这是创建 window.
的代码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()
is specifically for closing a window. You will need the windowId
, which is available as the id
property within the windows.Window
Object which is passed to the callback/resolve function for windows.create()
。
您不需要从打开 window 的同一个脚本中调用 windows.remove()
。任何有权访问 API 的脚本都可以关闭 window.
您可以通过以下方式从 "dismiss" 按钮中删除由 Firefox 中的扩展程序创建的 window:
GetEl('dismiss').addEventListener('click',function(e)
{
browser.windows.getCurrent().then(F2);
});
function F2(info)
{
return browser.windows.remove(info.id);
} // F2
(GetEl returns 给定 id 字符串的元素节点。)