tabs.move()
移动一个或多个标签页到同一窗口中的新位置或不同窗口中。
只能将标签页移动到 WindowType
属性为 "normal"
的窗口,或在 WindowType
属性为 "normal"
的窗口中移动标签页。
这是一个返回 Promise
的异步函数。
语法
let moving = browser.tabs.move(
tabIds, // 整数或整数数组
moveProperties, // 对象
);
参数
tabIds
-
整数或整数数组。要移动的标签页#的 ID,或标签页 ID 数组。
moveProperties
-
object
。指定标签页移动目标的对象。windowId
可选-
integer
。要将标签页移动到的窗口的 ID。如果省略此参数,则每个在tabIds
中的标签页将会移动到其当前窗口的index
位置。如果包含此参数,并且tabIds
包含多个标签页,则第一个标签页将移动到index
位置,其他标签页将按照给定的顺序依次跟随。 index
-
integer
。要移动到的索引位置,从 0 开始计数。值为 -1 将标签页放置在窗口的末尾。如果传递一个小于 -1 的值,函数将抛出错误。
注意,不能将固定标签页移动到未固定标签页之后的位置,也不能将任何未固定标签页移动到固定标签页之前的位置。例如,如果目标窗口中有一个或多个固定标签页,并且
tabIds
引用的是一个未固定标签页,则不能在此处传递 0。如果尝试这样做,函数将静默失败(不会抛出错误)。
返回值
示例
将当前窗口中的第一个标签页移动到当前窗口的最后位置:
function onMoved(tab) {
console.log(`已移动:${tab}`);
}
function onError(error) {
console.log(`发生错误:${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 的标签页移动到它们所在窗口的末尾:
function onMoved(tab) {
console.log(`已移动:${tab}`);
}
function onError(error) {
console.log(`发生错误:${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 号位置开始:
function onMoved(tab) {
console.log(`已移动:${tab}`);
}
function onError(error) {
console.log(`发生错误:${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 tables only load in the browser
备注:
此 API 基于 Chromium 的 chrome.tabs
API。此文档来源于 Chromium 代码库中的 tabs.json
。