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.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);
浏览器兼容性
加载中…