windows.create()
创建一个新的窗口。
当你创建一个窗口时,你可以:
- 加载一个或多个新的标签页到该窗口中。
- 将一个现有窗口的标签页移动到新的窗口中
- 设置窗口的大小和位置
- 创建一个“面板”样式(没有任何浏览器 UI(如地址栏、工具栏等))的窗口。
- 设置窗口的多种属性,如获得焦点或设为隐私窗口。
这是一个返回 Promise 的异步函数。
语法
let creating = browser.windows.create(
createData // 可选对象
)
参数
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或其数组(array)。要在窗口中打开的 URL 或 URL 数组。完全限定 URL 必须包含方案(即http://www.google.com,而不是www.google.com)。相对 URL 将相对于扩展中的当前页面。默认为新标签页。 width可选-
integer。新窗口的宽度,包含框架。如果未指定,则默认使用固有宽度。
返回值
一个 Promise,其会兑现包含新窗口细节的 windows.Window 对象。该 Window 兑现将总是包含其 tabs 属性集,而不像 windows.get() 和类似的 API 返回的窗口对象那样只在传递了 populate 选项时才会包含 tabs。如果发生了错误则该 promise 将以错误消息拒绝。
示例
打开一个包含两个标签的窗口:
function onCreated(windowInfo) {
console.log(`已创建窗口:${windowInfo.id}`);
}
function onError(error) {
console.log(`发生错误:${error}`);
}
browser.browserAction.onClicked.addListener((tab) => {
var creating = browser.windows.create({
url: ["https://big.rakal.top", "https://addons.mozilla.org"],
});
creating.then(onCreated, onError);
});
当用户点击浏览器操作时将打开一个窗口,并且将当前活跃的标签页移动至新窗口中:
function onCreated(windowInfo) {
console.log(`已创建窗口:${windowInfo.id}`);
}
function onError(error) {
console.log(`发生错误:${error}`);
}
browser.browserAction.onClicked.addListener((tab) => {
var creating = browser.windows.create({
tabId: tab.id,
});
creating.then(onCreated, onError);
});
打开一个小的面板样式的窗口,并且加载一个本地包中的文件到其中
function onCreated(windowInfo) {
console.log(`已创建窗口:${windowInfo.id}`);
}
function onError(error) {
console.log(`发生错误:${error}`);
}
browser.browserAction.onClicked.addListener((tab) => {
var popupURL = browser.extension.getURL("popup/popup.html");
var creating = browser.windows.create({
url: popupURL,
type: "popup",
height: 200,
width: 200,
});
creating.then(onCreated, onError);
});
示例扩展
浏览器兼容性
Loading…
备注:
此 API 基于 Chromium 的 chrome.windows API。该文档衍生自 Chromium 代码中的 windows.json。