如何从原始标签页获取新打开的浏览器标签页名称?

5

我有这样的代码来在同一浏览器中从一个标签页创建新的标签页。

function newTab()
{
    var form1 = document.createElement("form");
    form1.id = "newTab1"
    form1.method = "GET";
    form1.action = "domainname";  //My site address
    form1.target = "framename";   //Browser tab name
    document.body.appendChild(form1);
    form1.submit();
}

以上代码可以正确地创建新选项卡。当从"MyNewTab"链接单击时,将跳转到主页。
<a href="javascript:newTab()" style=" margin-left:15px;" id="newTab"> MyNewTab </a>

我再次尝试将主页切换到新打开的选项卡。这次需要在不重新加载的情况下从主页切换到新选项卡。但是,这个新选项卡的内容被重新加载了。

如何获取选项卡名称并使新打开的选项卡获得焦点,从而单击“MyNewTab”链接?


你想在不刷新主页的情况下重新加载主页吗?你想打开一个新标签页而不刷新主页吗? - Mosh Feu
每次点击链接都会重新加载新打开的标签页。我不需要这种行为。我希望第二次点击时应该聚焦已经打开的标签页。有可能吗? - Jeyaprakash
很容易实现。请看我的回答。 - Mosh Feu
2个回答

2

您需要在JavaScript cookie中设置当前选定的选项卡,并始终在页面加载时读取此cookie并设置选项卡。

您可以在newTab()函数内设置cookie:

function newTab()
{
    var form1 = document.createElement("form");
    form1.id = "newTab1"
    form1.method = "GET";
    form1.action = "domainname";  //My site address
    form1.target = "framename";   //Browser tab name

    $.cookie("currentTab", "framename");//set the selected tab name in cookie

    document.body.appendChild(form1);
    form1.submit();
}

接着,在页面加载事件中:

var tabName=$.cookie("currentTab")//get the current tab name from cookie.
if(tabName==null){
tabName="default tab name"//at first time the cookie will be null, 
//so you need to assign a default value if the cookie is null
}

//set this tab as selected

我在我的代码中添加了这些行,出现了“$.cookie未定义错误”。 - Jeyaprakash
我需要设置 JavaScript cookie 来解决这个问题,谢谢帮助。 - Jeyaprakash
但是您只需要添加jQuery引用即可使上述代码工作。 - Nishad K Ahamed

1
如果我理解正确,您只需要使用 window.open()window.focus()

说明:当用户单击按钮时,您检查新标签页是否已打开。如果是,则只需使用window.focus()。如果没有,则使用window.open()打开它。

像这样:

var new_win;
document.querySelector('button').onclick = function(){
  if (new_win) {
    new_win.focus();
  }
  else {
    new_win = window.open('second_page_url');
  }
};
<button>Open tab</button>

注意:此代码在片段中无法运行(因为安全性),所以您可以在http://jsbin.com/tebecu中查看它。


非常感谢,它在Chrome浏览器中运行良好。但是在其他浏览器(如Firefox)中无法工作。有什么解决办法吗? - Jeyaprakash
1
很抱歉,由于Firefox的安全原因,这似乎是不可能的。https://dev59.com/rnzaa4cB1Zd3GeqPXPwh - Mosh Feu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接