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 中,此值目前对弹出窗口无效(错误 1271047),但可以使用 browser.windows.update() 设置。) state
可选-
一个
windows.WindowState
值。窗口的初始状态。minimized
、maximized
和fullscreen
状态不能与left
、top
、width
或height
结合使用。 tabId
可选-
integer
。如果包含,则将指定 ID 的选项卡从现有窗口移动到新窗口。 titlePreface
可选-
string
。使用此选项将字符串添加到浏览器窗口标题的开头。根据底层操作系统,这可能无法在没有标题的浏览器窗口(例如 Firefox 中的 about:blank)上使用。 top
可选-
integer
。新窗口距屏幕顶部的距离(以像素为单位)。如果未指定,则新窗口将从最后一个处于焦点的窗口自然偏移。此值对面板无效。(在 Firefox 中,此值目前对弹出窗口无效(错误 1271047),但可以使用 browser.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
。如果发生任何错误,则承诺将使用错误消息拒绝。
示例
打开一个包含两个选项卡的窗口
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);
});
示例扩展
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。
注意:此 API 基于 Chromium 的 chrome.windows
API。本文档源自 Chromium 代码中的 windows.json
。