getDependentTabs
このメソッドは、タブの子タブまたは依存タブのリストを返します。 このAPIを使用して、親タブから開いたすべての子タブを追跡します。
このAPIは、tabContext
オブジェクトを介して公開されます。
構文は次のとおりです:
getDependentTabs(): Promise<ITabContext[]>;
getDependentTabs
のTypeScriptの例を次に示します。
/// <reference path="uiEventsFramework.d.ts"/>
const frameworkProvider: IUiEventsFrameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('MyFirstExtensionID', 'v1');
const currentTabContext: ITabContext = await frameworkProvider.getCurrentBrowserTabContext();
const childTabContexts: ITabContext[] = await currentTabContext.getDependentTabs();
getCurrentBrowserTabContext
のJavaScriptの例を次に示します。
const frameworkProvider = await CX_SVC_UI_EVENTS_FRAMEWORK.uiEventsFramework.initialize('MyFirstExtensionID', 'v1');
const currentTabContext = await frameworkProvider.getCurrentBrowserTabContext();
const childTabContexts = await currentTabContext.getDependentTabs();
例
次に、tabContextの子タブと内部子タブを再帰的に検索して閉じるコード・サンプルを示します:
async function getChildTabs(selectedTab, grandChildren) {
return new Promise(async (resolve, reject) => {
if (!grandChildren) {
grandChildren = [];
childTabsInitiatorPromiseResolve = resolve;
}
const newChildTabs = await selectedTab.getDependentTabs();
grandChildren = grandChildren.concat(newChildTabs);
newChildTabs.forEach(async (child) => {
await getChildTabs(child, grandChildren);
});
if (newChildTabs.length === 0) {
childTabsInitiatorPromiseResolve(grandChildren);
}
})
}
// Function to close the child tabs
function closeChildTabs(extAction) {
getChildTabs(selectedTabContext).then((childTabs) => {
if (childTabs) {
const payload = uiEventsFrameworkInstance.requestHelper.createPublishRequest('cxEventBusCloseTabOperation');
setCallbackCounter(extAction, 'call');
childTabs.forEach((selectedChildTabContext, i) => {
selectedChildTabContext.publish(payload).then((message) => {
childTabsList.push = message.responseDetails.data.payload.tabId;
if (i == childTabs.length - 1) {
document.getElementById('allActionsResults').innerHTML = `<div><span id="tabId"> Closed Tabs: ${childTabsList}</span></div>`;
}
}).catch((error) => {
console.log(error.message);
});
})
}
})
}