本文整理汇总了TypeScript中webextension-polyfill-ts.browser.tabs类的典型用法代码示例。如果您正苦于以下问题:TypeScript browser.tabs类的具体用法?TypeScript browser.tabs怎么用?TypeScript browser.tabs使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了browser.tabs类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: async
export const pushTab = async (): Promise<void> => {
const windows: browser.windows.Window[] = await browser.windows.getAll({populate: true});
// Just in case number of windows goes below 1
if (windows.length <= 1) {
return;
} else if (windows.length === 2) {
const tab: browser.tabs.Tab = await utils.tabs.getCurrent();
const otherWindow: browser.windows.Window[] = windows.filter(
(w: browser.windows.Window): boolean => w.id !== tab.windowId
);
browser.tabs.move(tab.id, {windowId: otherWindow[0].id, index: -1}).catch(
(e: Error): void => {
logging.error(e.message);
}
);
browser.windows.update(otherWindow[0].id, {focused: true}).catch(
(e: Error): void => {
logging.error(e.message);
}
);
browser.tabs.update(tab.id, {selected: true, pinned: tab.pinned}).catch(
(e: Error): void => {
logging.error(e.message);
}
);
} else {
const tab: browser.tabs.Tab = await utils.tabs.getCurrent();
const newTab: browser.tabs.Tab = await browser.tabs.create(
{
url : `../tabbo.html#${tab.id}`
}
);
const onTabChange: tabbo.TabsOnActivatedCallback = async (e: tabbo.TabsOnActivatedEvent) => {
if (e.tabId !== newTab.id) {
browser.tabs.onActivated.removeListener(onTabChange);
browser.tabs.get(newTab.id).catch((e: Error): void => {
logging.error(e.message);
});
if (!browser.runtime.lastError) {
browser.tabs.remove(newTab.id).catch((e: Error): void => {
logging.error(e.message);
});
}
}
};
browser.tabs.onActivated.addListener(onTabChange);
}
};
示例2: onTabRemoved
async function onTabRemoved(id: number, info: Tabs.OnRemovedRemoveInfoType) {
const state = getWindowState(info.windowId);
// Since we don't have a good way of determining whether the removed tab was
// previously the active tab, make an educated guess based on the fact that
// the browser may focus some other tab before we get this message, so the
// removed tab will be either:
// 1. The most-recent tab in the window's history
// 2. The second most-recent tab in the window's history, and the active
// window was just changed.
const browserChangedFocus = activeChanged && id === state.history.second;
const wasActive = browserChangedFocus || id === state.history.first;
logger.enabled && logger.log(
`wasActive = ${wasActive}, activeChanged = ${activeChanged}, browserChangedFocus = ${browserChangedFocus}`);
// If we are overriding which tab gets focused after removing a tab, and the
// browser focused some other tab before telling us which tab was removed,
// rewind the state by one to ignore the unwanted change made by the browser.
if (browserChangedFocus && settings.onClose !== 'default') {
state.rewind();
}
state.removeTab(id);
// If the removed tab was active, override which tab gets focus next.
if (wasActive) {
switch (settings.onClose) {
case 'lastfocused':
const newTab = state.history.first;
logger.enabled && logger.log(`focusing last-focused tab ${newTab}`);
if (newTab !== undefined) {
await focusTab(newTab);
}
break;
case 'next':
case 'previous':
// If 'next', the next tab will be in the closing tab's old position.
// If 'previous', focus the tab right before that, or the leftmost tab.
let index = state.activeTabIndex;
logger.enabled && logger.log(`focusing ${settings.onClose} tab from position ${index}`);
if (index !== undefined) {
if (settings.onClose === 'previous') {
index = Math.max(0, index - 1);
}
const tabs = await browser.tabs.query({ windowId: info.windowId, index });
if (tabs.length > 0) {
await focusTab(tabs[0]);
}
}
break;
}
}
}
示例3:
w.tabs.forEach((t: browser.tabs.Tab): void => {
browser.tabs.move(
t.id,
{windowId: firstWindowId, index: -1},
).catch((e: Error): void => {
logging.error(e.message);
});
});
示例4: getNextTabPosition
async function getNextTabPosition(neighbor: Tabs.Tab | number) {
if (typeof neighbor === 'number') {
neighbor = await browser.tabs.get(neighbor);
}
return {
index: neighbor.index + 1,
windowId: neighbor.windowId,
};
}
示例5: initActiveTabs
async function initActiveTabs() {
const activeTabs = await browser.tabs.query({ active: true});
for (const tab of activeTabs) {
if (tab.windowId === undefined || tab.id === undefined) {
continue;
}
const state = getWindowState(tab.windowId);
state.addTab(tab.id);
}
}