开发者问题收集

切换标签 JavaScript

2014-10-10
3079

这很难解释,但我会尽力。我在我的网页上添加了事件监听器,只需按下一个键即可将您带到某些页面,它们工作得很好。我使用了以下代码:

if(e.keyCode === 65)
    window.location.replace('http://exampleurl.com/example');

这工作得很好。我尝试像这样用新标签打开它们:

if(e.keyCode === 65)
    window.open('http://exampleurl.com/example', '_newtab');

这也完全没问题。现在我认为每次尝试访问其中一个页面时都打开一个新标签肯定会很烦人。我想让它变成这样:如果您已经在一个选项卡中打开了一个页面,按下访问该页面的键将简单地切换到打开该页面的选项卡。我能做到的最接近这一点的方法是这样做:

if(e.keyCode === 65)
    window.open('http://exampleurl.com/example', '_newtab_home');

if(e.keyCode === 66)
    window.open('http://anotherexampleurl.com/example2', '_newtab_home');

即使您在另一个选项卡中,这也会在同一个选项卡中打开新的 URL。但它不会切换到那个选项卡。我认为这样做是可行的,因为当我说“_newtab_home”时,它基本上会命名该选项卡,并且具有该目标的所有内容都会在该选项卡中打开。这很酷,我理解这一点,但是我如何让它在加载新 URL 时打开该选项卡?我希望能够为尚未访问过的位置打开一个新选项卡,但是在您访问它们并尝试返回主页(“ http://exampleurl.com/example ”)后,我希望它切换回已经打开的选项卡。我知道有一种方法可以使用 JavaScript 中的选项卡编号切换选项卡,如下所示:

var tabnum = 2;
$('ul.quicktabs_tabs li.tab' + tabnum + ' a').trigger('keyup');

但我宁愿不使用选项卡编号来做到这一点,因为这些编号总是会有所不同,具体取决于用户点击它们的顺序,或者他们是否打开了任何选项卡。但我真的不知道该怎么做。

我认为在我的网站上,您可以通过按键访问大约六个不同的位置。我希望每个位置都有自己的选项卡来打开,并且我希望每当您再次按下打开它的键时切换回该选项卡。这可以在 JavScript 中实现吗?如果可以,请帮助我!提前致谢。(如果这个问题不清楚,我很抱歉,请随时发表评论并提出问题。)

1个回答

没有找到一种方法来检查窗口是否已打开,但有一种方法可以检查打开窗口的选项卡是否已打开它们并存储您打开的选项卡的引用:

HTML:

<input type='button' id='button' value='Open' >

JS:

window.onload=function(){


    function launchApplication(l_url, l_windowName)
    {
      if ( typeof launchApplication.winrefs == 'undefined' )
      {
        launchApplication.winrefs = {};
      }
      if ( typeof launchApplication.winrefs[l_windowName] == 'undefined' || launchApplication.winrefs[l_windowName].closed )
      {

        launchApplication.winrefs[l_windowName] = window.open(l_url, l_windowName);
      } else {
        launchApplication.winrefs[l_windowName].focus()
      }
    }

    document.getElementById('button').addEventListener('click', function(){
        launchApplication('http://www.google.com', 'g')
    });

}

Fiddle: http://jsfiddle.net/zwnwskay/1/

juvian
2014-10-10