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.club.tw", "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。