tabs.warmup()

为了优化系统资源使用,浏览器可能会放弃与用户一段时间未访问的标签关联的 GPU 资源。如果浏览器已对某个标签执行此操作,则重新激活该标签(例如,当用户切换到该标签时)可能比平时花费更长时间。

tabs.warmup() API 使扩展能够启动渲染非活动标签资源的过程,如果扩展预计用户可能很快切换到该标签。然后,这使得实际的标签切换速度比平时更快。

请注意,此 API 不适用于已丢弃的标签,并且不需要在切换标签之前立即调用。它仅仅是在可以预期标签切换时(例如,当悬停在单击后将切换到该标签的按钮上时)进行的性能改进。

预计此 API 主要对标签管理扩展有用。

这是一个异步函数,它返回一个 Promise

语法

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

参数

tabId

整数。要预热的标签的 ID。如果此处传递的参数不是整数(特别是,如果它是nullundefined),则warmup()将同步抛出异常。

返回值

一个 Promise,如果由tabId标识的标签成功预热,则该 Promise 将在没有参数的情况下完成。如果tabId未标识打开的标签,或者由于某些其他原因预热失败,则该 Promise 将被拒绝并显示错误消息。

示例

此代码将侦听器添加到browserAction.onClicked事件。侦听器检索当前窗口中包含“https://mdn.org.cn/”下页面的所有标签,并预热找到的第一个标签。

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.org.cn/*",
  });

  if (mdnTabs.length > 0) {
    const warming = browser.tabs.warmup(mdnTabs[0].id);
    warming.then(onSuccess, onFailure);
  }
}

browser.browserAction.onClicked.addListener(warmupMDN);

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。