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