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.club.tw。
function onUpdated(tab) {
console.log(`Updated tab: ${tab.id}`);
}
function onError(error) {
console.log(`Error: ${error}`);
}
let updating = browser.tabs.update({ url: "https://mdn.club.tw" });
updating.then(onUpdated, onError);
啟用當前視窗中的第一個標籤頁,並將其導航到 https://mdn.club.tw。
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.club.tw",
});
updating.then(onUpdated, onError);
}
let querying = browser.tabs.query({ currentWindow: true });
querying.then(updateFirstTab, onError);
擴充套件程式示例
瀏覽器相容性
載入中…
注意:此 API 基於 Chromium 的 chrome.tabs API。本文件源自 Chromium 程式碼中的 tabs.json。