tabs.moveInSuccession()
Ändert die Nachfolgereihenfolge für eine Gruppe von Tabs.
Unter Verwendung der tabs
API kann einem Tab ein Nachfolger-Tab im selben Fenster zugewiesen werden. Wenn Tab B der Nachfolger von Tab A ist und Tab A geschlossen wird, während es aktiv ist, wird Tab B als nächstes aktiviert. Wenn Tab A keinen Nachfolger hat, kann der Browser frei entscheiden, welcher Tab als nächstes aktiviert wird. Wenn Tab B der Nachfolger von Tab A ist, wird Tab A als Vorgänger von Tab B bezeichnet. Ein Tab kann höchstens einen Nachfolger haben, jedoch eine beliebige Anzahl von Vorgängern. Ein Tab kann sich selbst oder einen Tab in einem anderen Fenster nicht als Nachfolger nehmen.
Alle Tabs beginnen ohne Nachfolger; Tabs bekommen nur einen Nachfolger zugewiesen, wenn eine WebExtension dies tut. Der Browser sollte jedoch, soweit möglich, einen Tab in einer Nachfolgerelation zu anderen Tabs nicht verwaisen lassen: Wenn Tab B der Nachfolger von Tab A ist und Tab C der Nachfolger von Tab B ist und B geschlossen wird (oder in ein anderes Fenster verschoben wird), dann wird Tab A Tab C als Nachfolger übernehmen. Dies wird als Verschieben eines Tabs (B) aus seiner Nachfolgereihe bezeichnet, um zu verhindern, dass C verwaist.
tabs.moveInSuccession()
nimmt ein Array von Tab-IDs und verschiebt alle diese Tabs aus ihren Nachfolgereihen. Es macht dann jeden Tab zum Nachfolger des vorherigen Tabs im Array und bildet eine Kette. Optional kann es den Nachfolger des letzten Tabs in der Kette auf einen Anker-Tab setzen, der nicht aus seiner Nachfolgereihe verschoben wird. Zusätzliche Optionen können steuern, ob die Tab-Kette "vorangestellt" oder "angehängt" an den Anker-Tab wird und ob der Vorgang wie ein verknüpftes Listeneinfügen behandelt wird.
Obwohl der Nachfolger-Tab mit tabs.update()
zugewiesen werden kann, ist es oft wünschenswert, tabs.moveInSuccession()
zu verwenden, um Nachfolger zu ändern, auch wenn nur ein einzelner Tab seinen Nachfolger zugewiesen bekommt. Der Unterschied ist, dass browser.tabs.moveInSuccession([a], b)
den Tab a
aus seiner Nachfolgereihe verschiebt, sodass alle Vorgänger von a
den vorherigen Nachfolger von a
übernehmen; während wenn browser.tabs.update(a, {successorTabId: b})
stattdessen verwendet wird, Tab a
möglicherweise weiterhin der Nachfolger anderer Tabs ist, was unerwartet sein könnte. Ein weiterer Vorteil von tabs.moveInSuccession()
ist, dass alle Nachfolgeränderungen atomar erfolgen, ohne sich um Konflikte zwischen Aufrufen von tabs.update()
und tabs.get()
und anderen Vorgängen, wie dem Schließen eines Tabs durch den Benutzer, kümmern zu müssen.
Syntax
browser.tabs.moveInSuccession([1, 3, 5, 7, 2, 9], 4, {insert:true})
Parameter
tabIds
-
array
voninteger
. Ein Array von Tab-ID
s. Die Reihenfolge der Elemente im Array definiert das Verhältnis der Tabs. Alle ungültigen Tab-ID
s oder Tab-ID
s, die zu Tabs gehören, die nicht im selben Fenster wietabId
(oder der erste Tab im Array, fallstabId
weggelassen wird) sind, werden ignoriert – sie behalten ihre aktuellen Nachfolger und Vorgänger. tabId
Optional-
integer
. DieID
des Tabs, der der Nachfolger des letzten Tabs imtabIds
Array sein wird. Wenn dieseID
ungültig ist odertabs.TAB_ID_NONE
, wird der letzte Tab keinen Nachfolger haben. Standardwert isttabs.TAB_ID_NONE
. options
Optional-
object
.append
Optional-
boolean
. Bestimmt, ob die Tabs intabIds
vor oder nachtabId
in der Nachfolge verschoben werden. Wennfalse
, werden die Tabs vortabId
verschoben, wenntrue
, werden die Tabs nachtabId
verschoben. Standardwert istfalse
. insert
Optional-
boolean
. Bestimmt, ob die aktuellen Vorgänger oder Nachfolger (abhängig vonoptions.append
) vontabId
nach dem Voranstellen oder Anhängen mit der anderen Seite der Kette verbunden werden. Wenntrue
, passiert eines der folgenden: wennoptions.append
false
ist, wird der erste Tab im Array als Nachfolger aller aktuellen Vorgänger vontabId
festgelegt; wennoptions.append
true
ist, wird der aktuelle Nachfolger vontabId
als Nachfolger des letzten Tabs im Array festgelegt. Standardwert istfalse
.