tabs.move()

將一個或多個標籤頁移動到同一視窗中的新位置,或移動到另一個視窗。

您只能將標籤頁移動到型別為 "normal" 的視窗,以及從這些視窗中移動標籤頁。有關詳細資訊,請參閱 WindowType

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

語法

js
let moving = browser.tabs.move(
  tabIds,              // integer or integer array
  moveProperties       // object
)

引數

tabIds

integerintegerarray。要移動的 tab 的 ID,或者一組標籤頁 ID。

moveProperties

object。一個指定標籤頁移動到的位置的物件。

windowId 可選

integer。您希望將標籤頁移動到的視窗的 ID。如果省略此引數,則 tabIds 中的每個標籤頁都將移動到其當前視窗中的 index 位置。如果包含此引數,並且 tabIds 包含多個標籤頁,則 tabIds 中的第一個標籤頁將移動到 index 位置,其他標籤頁將按照 tabIds 中給出的順序跟隨其後。

index

integer。要移動標籤頁到的索引位置,從 0 開始。值為 -1 將把標籤頁放在視窗的末尾。

如果您傳遞的值小於 -1,函式將丟擲錯誤。

請注意,您不能將固定的標籤頁移動到任何未固定標籤頁之後的位置,也不能將任何未固定標籤頁移動到任何固定標籤頁之前的位置。例如,如果目標視窗中有固定標籤頁,而 tabIds 指的是一個未固定的標籤頁,那麼您不能在此處傳遞 0。如果您嘗試這樣做,該函式將靜默失敗(不會丟擲錯誤)。

返回值

一個 Promise,它將以一個 tabs.Tab 物件或一組 tabs.Tab 物件(包含有關已移動標籤頁的詳細資訊)來 fulfilled。如果沒有標籤頁被移動(例如,因為您嘗試將一個未固定的標籤頁移動到一個固定標籤頁之前),它將是一個空陣列。如果發生任何錯誤,Promise 將以錯誤訊息被 rejected。

示例

將當前視窗的第一個標籤頁移動到當前視窗的最後一個位置

js
function onMoved(tab) {
  console.log(`Moved: ${tab}`);
}

function onError(error) {
  console.log(`Error: ${error}`);
}

function firstToLast(windowInfo) {
  if (windowInfo.tabs.length === 0) {
    return;
  }
  let moving = browser.tabs.move(windowInfo.tabs[0].id, { index: -1 });
  moving.then(onMoved, onError);
}

browser.browserAction.onClicked.addListener(() => {
  let gettingCurrent = browser.windows.getCurrent({ populate: true });
  gettingCurrent.then(firstToLast, onError);
});

將所有透過 HTTP 或 HTTPS 服務的來自 *.mozilla.org 的標籤頁移動到其視窗的末尾

js
function onMoved(tab) {
  console.log(`Moved: ${tab}`);
}

function onError(error) {
  console.log(`Error: ${error}`);
}

function moveMoz(tabs) {
  let mozTabIds = tabs.map((tabInfo) => tabInfo.id);
  let moving = browser.tabs.move(mozTabIds, { index: -1 });
  moving.then(onMoved, onError);
}

browser.browserAction.onClicked.addListener(() => {
  let gettingMozTabs = browser.tabs.query({ url: "*://*.mozilla.org/*" });
  gettingMozTabs.then(moveMoz, onError);
});

將所有透過 HTTP 或 HTTPS 服務的來自 *.mozilla.org 的標籤頁移動到第一個此類標籤頁所在的視窗,從位置 0 開始

js
function onMoved(tab) {
  console.log(`Moved: ${tab}`);
}

function onError(error) {
  console.log(`Error: ${error}`);
}

function moveMoz(tabs) {
  let mozTabIds = tabs.map((tabInfo) => tabInfo.id);
  let targetWindow = tabs[0].windowId;
  let moving = browser.tabs.move(mozTabIds, {
    windowId: targetWindow,
    index: 0,
  });
  moving.then(onMoved, onError);
}

browser.browserAction.onClicked.addListener(() => {
  let gettingMozTabs = browser.tabs.query({ url: "*://*.mozilla.org/*" });
  gettingMozTabs.then(moveMoz, onError);
});

擴充套件程式示例

瀏覽器相容性

注意: 此 API 基於 Chromium 的 chrome.tabs API。本文件源自 Chromium 程式碼中的 tabs.json