MS Edge 垂直标签:滚动到活动标签?

MS Edge vertical tabs: scroll to active tab?

在具有大量垂直标签的 MS Edge 中,当新创建的标签移动到顶部附近时,它会将标签滚动到底部,使活动(新)标签看不见。 有没有办法阻止选项卡滚动或至少滚动到活动选项卡?

background.js

/* listen for new tab event */
chrome.tabs.onCreated.addListener( tab =>
{
  /* move tab to the top */
  chrome.tabs.move(tab.id, {index: 0});
});

manifest.json

{
   "background": {
      "persistent": true,
      "scripts": [ "background.js" ]
   },
   "description": "open new tabs as first tab",
   "manifest_version": 2,
   "name": "test",
   "permissions": [ "tabs" ],
   "version": "0.0.1"
}

对于 MS Edge 垂直标签布局,一个可能的解决方案可能是以这种方式固定标签。

chrome.tabs.onCreated.addListener( tab => {
    chrome.tabs.move(tab.id, {index: 0}, t => {
        chrome.tabs.update(t.id, {pinned: true})
    })
});

编辑:固定选项卡会将其移动到顶部位置S,因此可能不需要chrome.tab.move

到目前为止,我能找到的唯一解决方案是跟踪前一个活动标签,当新标签移动时,激活前一个标签,等待 200 毫秒并激活新标签(延迟小于 200 毫秒似乎非常不可靠)。它有效,但不幸的是它会明显滚动选项卡。

var lastActiveTab = {};
/* collect active tab for each window at startup */
chrome.tabs.query({active: true}, tabs =>
{
  for(let i = 0; i < tabs.length; i++)
  {
    lastActiveTab[tabs[i].windowId] = tabs[0];
  }
})

/* listen for tab switch */
chrome.tabs.onActivated.addListener( info =>
{
  /* work around for a bug https://bugs.chromium.org/p/chromium/issues/detail?id=1213925 */
  setTimeout(() =>
  {
    /* track active tab */
    chrome.tabs.get(info.tabId, tab => lastActiveTab[tab.windowId] = tab);
  }, 300);
});

/* listen for new tab event */
chrome.tabs.onCreated.addListener( tab =>
{
  /* move tab to the top */
  chrome.tabs.move(tab.id, {index: 0});
  /* activate previous tab */
  chrome.tabs.update(lastActiveTab[tab.windowId].id, {active: true});
  /* wait 200ms and activate new tab */
  setTimeout(() => chrome.tabs.update(tab.id, {active: true}), 200);
});