tabs.warmup()

為了最佳化系統資源使用,瀏覽器可能會丟棄使用者在一定時間內未訪問的標籤頁相關的 GPU 資源。如果瀏覽器已對某個標籤頁執行此操作,那麼重新啟用該標籤頁(例如,當用戶切換到它時)可能比正常情況花費更長的時間。

tabs.warmup() API 使擴充套件能夠啟動渲染非活動標籤頁資源的程序,如果擴充套件預期使用者可能很快會切換到該標籤頁。這使得實際的標籤頁切換比其他方式更快。

請注意,此 API 不適用於已丟棄的標籤頁,也不需要在切換標籤頁之前立即呼叫。它僅僅是在可以預期到標籤頁切換時的一種效能改進,例如當滑鼠懸停在一個按鈕上,點選該按鈕會切換到該標籤頁時。

預計此 API 主要對標籤頁管理擴充套件有用。

這是一個非同步函式,返回一個 Promise

語法

js
let warming = browser.tabs.warmup(
  tabId               // integer
)

引數

tabId

integer。要預熱的標籤頁的 ID。如果此處傳遞的引數不是整數(特別是,如果它是 nullundefined),則 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);

瀏覽器相容性