windows.create()
创建一个新窗口。
创建窗口时,您可以
- 加载一个或多个新标签页到窗口中。
- 将标签页从现有窗口移动到新窗口。
- 设置窗口的大小和位置。
- 创建一个“面板”样式的窗口,在这种情况下,它意味着一个没有正常浏览器 UI(地址栏、工具栏等)的窗口。
- 设置窗口的各种属性,例如它是否获得焦点或是否为隐私模式。
这是一个异步函数,返回一个 Promise。
语法
let creating = browser.windows.create(
createData // optional object
)
参数
createData可选-
object.allowScriptsToClose可选-
boolean。当窗口打开时,它将包含一个单独的标签页,如果提供了url并且它包含一个包含多个 URL 的数组,则会包含多个标签页。默认情况下,运行在这些页面中的脚本不允许使用window.close()关闭它们的标签页。如果您包含allowScriptsToClose并将其设置为true,则此默认行为将被更改,因此脚本可以关闭它们的标签页。请注意,- 这仅适用于创建窗口时打开的标签页。如果用户在此窗口中打开更多标签页,则脚本将无法关闭这些新标签页。
- 如果
url中提供的 URL 指向 扩展页面(即,它们是此扩展随附并使用“moz-extension:”协议加载的页面),则默认情况下脚本 *可以* 关闭这些标签页。
-
integer。如果存在,则指定窗口打开时创建的所有标签页的CookieStoreId。有关使用cookieStoreId的更多信息,请参阅 处理上下文身份。 focused可选-
boolean。如果为true,则新窗口将获得焦点。如果为false,则新窗口将在后台打开,并且当前获得焦点的窗口将保持焦点。默认为true。 height可选-
integer。新窗口的高度(以像素为单位),包括边框。如果未指定,则默认为自然高度。 incognito可选-
boolean。新窗口是否应为隐身(隐私)窗口。请注意,如果您同时指定了incognito和tabId,则该 ID 必须引用一个隐私标签页 — 也就是说,您不能将非隐私标签页移动到隐私窗口。 left可选-
integer。新窗口距离屏幕左边缘的像素位置。如果未指定,则新窗口会自然地相对于最后一个获得焦点的窗口偏移。(在 Firefox 108 及更早版本中,此参数对panel或popup窗口类型无效;可以使用windows.update()来定位窗口作为一种解决方法。) state可选-
一个
windows.WindowState值。窗口的初始状态。minimized、maximized和fullscreen状态不能与left、top、width或height组合使用。 tabId可选-
integer。如果包含,则将指定 ID 的标签页从现有窗口移动到新窗口。 titlePreface可选-
string。使用此参数将一个字符串添加到浏览器窗口标题的前面。根据底层操作系统,这可能不适用于没有标题的浏览器窗口(例如 Firefox 中的 about:blank)。 top可选-
integer。新窗口距离屏幕顶部的像素位置。如果未指定,则新窗口会自然地相对于最后一个获得焦点的窗口偏移。(在 Firefox 108 及更早版本中,此参数对panel或popup窗口类型无效;可以使用windows.update()来定位窗口作为一种解决方法。) type可选-
一个
windows.CreateType值。指定要创建的浏览器窗口的类型。在此处指定panel或popup以打开一个没有正常浏览器 UI(地址栏、工具栏等)的窗口。 url可选-
string或string的array。一个 URL 或 URL 数组,将作为标签页在新窗口中打开。完整限定 URL 必须包含方案(例如,http://www.google.com,而不是www.google.com)。相对 URL 将相对于扩展程序中的当前页面。默认为新标签页。 width可选-
integer。新窗口的宽度(以像素为单位),包括边框。如果未指定,则默认为自然宽度。
返回值
一个 Promise,它将以一个 windows.Window 对象(包含新窗口的详细信息)来兑现。此 Window 对象将始终设置其 tabs 属性,这与从 windows.get() 和类似 API 返回的 Window 对象不同(这些对象仅在传递了 populate 选项时才包含 tabs)。如果发生任何错误,Promise 将以错误消息被拒绝。
示例
打开一个包含两个标签页的窗口
function onCreated(windowInfo) {
console.log(`Created window: ${windowInfo.id}`);
}
function onError(error) {
console.log(`Error: ${error}`);
}
browser.browserAction.onClicked.addListener((tab) => {
let creating = browser.windows.create({
url: ["https://mdn.org.cn", "https://addons.mozilla.org"],
});
creating.then(onCreated, onError);
});
在用户单击浏览器操作时打开一个窗口,并将当前活动标签页移入其中
function onCreated(windowInfo) {
console.log(`Created window: ${windowInfo.id}`);
}
function onError(error) {
console.log(`Error: ${error}`);
}
browser.browserAction.onClicked.addListener((tab) => {
let creating = browser.windows.create({
tabId: tab.id,
});
creating.then(onCreated, onError);
});
打开一个小型面板式窗口,并加载一个本地打包的文件
function onCreated(windowInfo) {
console.log(`Created window: ${windowInfo.id}`);
}
function onError(error) {
console.log(`Error: ${error}`);
}
browser.browserAction.onClicked.addListener((tab) => {
let popupURL = browser.extension.getURL("popup/popup.html");
let creating = browser.windows.create({
url: popupURL,
type: "popup",
height: 200,
width: 200,
});
creating.then(onCreated, onError);
});
扩展程序示例
浏览器兼容性
加载中…
注意: 此 API 基于 Chromium 的 chrome.windows API。本文档摘自 Chromium 代码中的 windows.json。