我有这样的标签:
在标签C后移动标签A 我使用
chrome.tabs.move(tabA.id, {'index': tabC.index+1});
但我在标签D 之后得到它 如果我在列表中向下移动任何选项卡,它可以正常工作,但如果" upper"选项卡向下移动,索引变得混乱(上部选项卡从索引列表中删除,目标索引下降1) 我是否需要以某种方式比较移动的标签索引和目标索引,并根据该计算结果索引(如果A< C)或更容易解决此问题?
答案 0 :(得分:1)
我也有使用Chrome API的一些经验,如果我学到了一件事,那就是API就像它一样行事。
如果在插入当前选项之前将新索引分配给选项卡,但是在删除它之后,那就是那个。
最好像你建议的那样选择支票:
function moveAfter(what, target)
{
target = (typeof target === 'number' target : target.index) + 1;
if(what.constructor === Array.prototype.constructor)
{
var w = [];
var t = target;
for(var i = 0; i < what.length)
{
if(what[i].index < target)
{
t--;
}
w.push(what[i].id);
}
what = w;
target = t;
}
else
{
if(what.index < target)
{
target--;
}
what = what.id;
}
chrome.tabs.move(what, {index: target});
}
what
可以是Tab
个对象,也可以是Tab
个数组
target
可以是Tab
对象或制表符索引(不含+1
)。
答案 1 :(得分:1)
这就是我最终的结果:
我有一个名为移动的数组,其中有对象
auth.requestedScopes = @[SPTAuthStreamingScope, SPTAuthPlaylistModifyPublicScope];
我可以在移动开始时为用户操作设置我想要的任何内容,因此我收集了ID和索引
在我的移动标签应该去的目标标签上(之后)我有这个:
moved = [{id, index}, {id, index}.....]
它实际上非常简单并且工作正常
答案 2 :(得分:0)
我在标签D之后得到它
这是因为您尝试移至tabC.index+1
(即4),然后移除标签A,结果为B, C, D, E
并移至索引4,结果为B, C, D, A, E
,即D后的A这有意义吗?
因此,如果您希望在标签C之后移动的标签位于标签C之前,则不要使用+1
位,否则您应该使用它。