tabs.warmup()
為了最佳化系統資源使用,瀏覽器可能會丟棄使用者在一定時間內未訪問的標籤頁相關的 GPU 資源。如果瀏覽器已對某個標籤頁執行此操作,那麼重新啟用該標籤頁(例如,當用戶切換到它時)可能比正常情況花費更長的時間。
tabs.warmup() API 使擴充套件能夠啟動渲染非活動標籤頁資源的程序,如果擴充套件預期使用者可能很快會切換到該標籤頁。這使得實際的標籤頁切換比其他方式更快。
請注意,此 API 不適用於已丟棄的標籤頁,也不需要在切換標籤頁之前立即呼叫。它僅僅是在可以預期到標籤頁切換時的一種效能改進,例如當滑鼠懸停在一個按鈕上,點選該按鈕會切換到該標籤頁時。
預計此 API 主要對標籤頁管理擴充套件有用。
這是一個非同步函式,返回一個 Promise。
語法
js
let warming = browser.tabs.warmup(
tabId // integer
)
引數
tabId-
integer。要預熱的標籤頁的 ID。如果此處傳遞的引數不是整數(特別是,如果它是null或undefined),則warmup()將同步丟擲異常。
返回值
一個 Promise,如果成功預熱了由 tabId 標識的標籤頁,則該 Promise 將以無引數的形式 fulfilled。如果 tabId 未標識一個開啟的標籤頁,或者由於其他原因預熱失敗,則該 Promise 將以錯誤訊息被 rejected。
示例
此程式碼向 browserAction.onClicked 事件新增一個偵聽器。偵聽器檢索當前視窗中包含 "https://mdn.club.tw/" 下頁面的所有標籤頁,並預熱找到的第一個標籤頁。
js
function onSuccess() {
console.log("success!");
}
function onFailure(error) {
// e.g. ID of a nonexistent tab
console.error(error);
}
async function warmupMDN() {
const mdnTabs = await browser.tabs.query({
currentWindow: true,
url: "https://mdn.club.tw/*",
});
if (mdnTabs.length > 0) {
const warming = browser.tabs.warmup(mdnTabs[0].id);
warming.then(onSuccess, onFailure);
}
}
browser.browserAction.onClicked.addListener(warmupMDN);
瀏覽器相容性
載入中…