tabs.move()

将一个或多个标签移动到同一窗口中的新位置,或移动到不同的窗口。

你只能将标签移动到 WindowType"normal" 的窗口中,或者从这些窗口中移动标签。

这是一个异步函数,它返回一个 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 对象的 array 来完成,其中包含关于已移动标签的详细信息。如果没有任何标签被移动(例如,因为你尝试将未固定标签移动到固定标签之前),那么这将是一个空数组。如果发生任何错误,则 Promise 将使用错误消息被拒绝。

示例

将当前窗口中的第一个标签移动到当前窗口的最后一个位置

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);
});

示例扩展

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

注意:此 API 基于 Chromium 的 chrome.tabs API。本文档源自 Chromium 代码中的 tabs.json