tabs.update()
将标签页导航到新的 URL,或修改标签页的其他属性。
要使用此函数,请传入要更新的标签页的 ID,以及一个包含您要更新的属性的 updateProperties 对象。如果在 updateProperties 中未指定的属性将不会被修改。
这是一个异步函数,返回一个 Promise。
语法
let updating = browser.tabs.update(
tabId, // optional integer
updateProperties // object
)
参数
tabId可选-
integer。默认为当前窗口的已选标签页。 updateProperties-
object。要为此标签页更新的属性集。有关这些属性的更多信息,请参阅tabs.Tab文档。active可选-
boolean。标签页是否应变为活动状态。不影响窗口是否获得焦点(请参阅windows.update)。如果为true,则未被激活的高亮标签页将停止高亮。如果为false,则不做任何操作。 autoDiscardable可选-
boolean。标签页是否可以被浏览器丢弃。默认值为true。当设置为false时,浏览器无法自动丢弃该标签页。但是,该标签页可以通过tabs.discard进行丢弃。 highlighted可选-
boolean。将标签页添加到当前选择中或从中移除。如果为true且该标签页未被高亮,则默认它将变为活动状态。如果您只想高亮标签页而不激活它,Firefox 支持将
highlighted设置为true并将active设置为false。其他浏览器在这种情况下也可能会激活该标签页。 loadReplace可选-
boolean。新的 URL 是否应替换标签页的导航历史中旧的 URL,通过“后退”按钮访问。 (例如,用户创建新标签页时,按下 Ctrl+T。默认情况下,在 Firefox 中,这将加载“about:newtab”。如果您的扩展程序随后使用tabs.update更新此页面,而不设置loadReplace,则“后退”按钮将启用,并将用户带回到“about:newtab”。如果扩展程序设置了loadReplace,则“后退”按钮将被禁用,并且就像该标签页访问的第一个页面是由扩展程序提供的 URL 一样。)例如,假设用户使用 Ctrl+T 创建了一个新标签页。默认情况下,在 Firefox 中,这将加载 "about:newtab"。如果您的扩展程序随后使用
tabs.update更新此页面,而不设置loadReplace,则“后退”按钮将启用,并且它将使用户返回到 "about:newtab"。如果扩展程序设置了loadReplace,则“后退”按钮将被禁用,并且就好像扩展程序提供的 URL 是该标签页中访问的第一个页面一样。请注意,原始 URL 仍将出现在浏览器的全局历史记录中。
muted可选-
boolean。标签页是否应被静音。 openerTabId可选-
integer。打开此标签页的标签页的 ID。如果指定,则打开者标签页必须与此标签页在同一窗口中。设置为-1以清除已设置的openerTabId。 pinned可选-
boolean。标签页是否应被固定。 selected已弃用 可选-
boolean。标签页是否应被选中。此属性已被active和highlighted替换。 successorTabId可选-
integer。标签页的后继标签页 ID。 url可选-
string。要将标签页导航到的 URL。出于安全原因,在 Firefox 中,这可能不是一个特权 URL。因此,传递以下任何 URL 都将失败,并且
runtime.lastError将设置为错误消息:- chrome: URL
- javascript: URL
- data: URL
- file: URL(即文件系统上的文件。但是,要使用打包在扩展程序内的文件,请参阅下文)
- 特权的 about: URL(例如,
about:config、about:addons、about:debugging、about:newtab)。非特权的 URL(例如about:blank)是允许的。
要加载与您的扩展程序打包在一起的页面,请指定一个以扩展程序的 manifest.json 文件开头的绝对 URL。例如:'/path/to/my-page.html'。如果省略前导的 '/',URL 将被视为相对 URL,不同的浏览器可能会构造不同的绝对 URL。
返回值
一个 Promise,它将以一个包含已更新标签页详细信息的 tabs.Tab 对象来 fulfilled。除非请求了匹配的 host permissions 或 "tabs" 权限,否则 tabs.Tab 对象不包含 url、title 和 favIconUrl。如果找不到该标签页或发生其他错误,Promise 将以错误消息被 rejected。
示例
将当前窗口中的活动标签页导航到 https://mdn.org.cn。
function onUpdated(tab) {
console.log(`Updated tab: ${tab.id}`);
}
function onError(error) {
console.log(`Error: ${error}`);
}
let updating = browser.tabs.update({ url: "https://mdn.org.cn" });
updating.then(onUpdated, onError);
激活当前窗口中的第一个标签页,并将其导航到 https://mdn.org.cn。
function onUpdated(tab) {
console.log(`Updated tab: ${tab.id}`);
}
function onError(error) {
console.log(`Error: ${error}`);
}
function updateFirstTab(tabs) {
let updating = browser.tabs.update(tabs[0].id, {
active: true,
url: "https://mdn.org.cn",
});
updating.then(onUpdated, onError);
}
let querying = browser.tabs.query({ currentWindow: true });
querying.then(updateFirstTab, onError);
扩展程序示例
浏览器兼容性
加载中…
注意:此 API 基于 Chromium 的 chrome.tabs API。本文档源自 Chromium 代码中的 tabs.json。