var newTabs = [];
newTabs.push( window.open("https://example.com", "_blank") );
// Add more tabs?
// Sorry, no way to figure out what the "next" tab is in the
// browser's list of tabs via straight on-site JavaScript,
// just go by next index in the array...
newTabs[0].focus();
// Query current active tab in the current active window:
chrome.tabs.query({currentWindow: true, active: true}, function(tabsArray) {
// If there are fewer than 2 tabs, you are on the only tab available.
// Nothing left to do.
if( tabsArray.length < 2 ) return;
// Else query tab with incremented index (e.g. next tab):
chrome.tabs.query({index: (tabsArray[0].index+1)}, function(nextTabsArray){
// There is no next tab (only 1 tab or user is on last tab)
if( nextTabsArray.length < 1 ) return;
// Else, yay! There is a next tab, lets go!
chrome.tabs.update(nextTabsArray[0].id, {active: true})
});
});
chrome.tabs.query({ currentWindow: true }, (tabsArray) => {
// If only 1 tab is present, do nothing.
if (tabsArray.length === 1) return;
// Otherwise switch to the next available tab.
// Find index of the currently active tab.
let activeTabIndex = null;
tabsArray.forEach((tab, index) => {
if (tab.active === true) {
activeTabIndex = index;
}
});
// Obtain the next tab. If the current active
// tab is the last tab, the next tab should be
// the first tab.
const nextTab = tabsArray[(activeTabIndex + 1) % tabsArray.length];
// Switch to the next tab.
chrome.tabs.update(nextTab.id, { active: true });
});
const myTab = window.open('https://stackexchange.com/questions', 'questions') // first call opens it
myTab.name = 'tags' // renaming window is fine
window.open('https://stackexchange.com/tags', 'tags') // second call switches to it
// assuming you have this set up:
// https://stackoverflow.com/questions/33957477/cross-domain-localstorage-with-javascript
// in the tab for https://same.domain/page-one
Window.name = 'new name'; // set current window name
sendMessage('new name') // using the linked code
// switch to the other tab, e.g. https://same.domain/page-two
// In your message event listener
function receiveMessage(e){
window.SiblingName = e.data;
}
window.open('https://same.domain/page-one', window.SiblingName)
3条答案
按热度按时间bn31dyow1#
是也不是。
如果您的意思是您可以在网站中使用JavaScript前进到下一个选项卡:如果您没有通过
window.open
打开其他选项卡(例如,尝试前进到另一个不是直接从当前网站打开的选项卡),那么不可能。如果可能,这将是一个安全风险,并为攻击者提供另一个“识别”用户的载体,或潜在地找到一种方法来访问有关用户已打开的其他选项卡的信息。如果您确实打开了网站中的选项卡,您可以focus到它们:
如果你指的是你正在使用的Chrome浏览器扩展,那么,是的,你可以使用Tabs API前进到下一个选项卡。这可能不起作用,我没有测试它,但似乎符合我所看到的文档和示例。如果你尝试并找到一个更好的解决方案,让我知道,我会更新):
roqulrg32#
正如@jim所说,使用JavaScript无法在网站内部切换标签页,但可以使用Chrome扩展中的Chrome Extension Tabs API来实现。
下面是我正在开发的扩展的代码片段。当触发时,它会切换到下一个标签页:
我希望这能解决你的疑问。如果你有更好的建议,请告诉我。
uqcuzwp83#
如果您知道窗口名称(通常是在您创建了窗口的情况下),并且您在同一个域上,则可以使用
window.open
调用的窗口名称部分切换到该窗口。窗口会重新加载,请记住这一点。
如果您可以访问要切换到的选项卡,***理论上***您可以使用postMessages执行以下操作:
我还没有得到上面的工作虽然。