2014-10-04 91 views
-2

我想在JavaScript或jQuery的新浏览器选项卡中打开一个URL。如果它已被打开,则选中该选项卡。在新标签页中打开一个URL

我用这个函数打开。

function OpenInNewTab(url) { 
    var win = window.open(url, '_blank'); 
    win.focus(); 
} 

如果该选项卡已打开,该怎么办?

+0

记住,你已经打开的窗口阵列之前。在OpenInNewTab上检查数组以查看是否存在URL的窗口,如果有焦点,则打开窗口并推入数组。 – artm 2014-10-04 12:03:18

+0

感谢您的提示。 – Farhad 2014-10-04 12:05:26

+1

有没有原因为什么这不能作为一个简单的目标=“_ blank”锚定标记​​? – 2014-10-04 12:06:59

回答

0

在这里看到:

How to change browser focus from one tab to another

,并在这里:

Detect If Browser Tab Has Focus

这两者都是以前的堆栈溢出的职位。

这是可能的,知道什么时候你的标签,而当用户移动远离它(使用新的网页浏览权限API)

但它无法切换到使用javascript另一个选项卡上。

然而,你可能(我非常怀疑适用于你的情况)为你的操作系统编写一个外部程序,可以与浏览器应用程序进行通信并以此方式进行切换,但直接从网页中,它是非启动器和巨大的安全风险。

0

在一般情况下,由于安全目的,脚本无法从浏览器获取有关打开页面的信息。

也许它可以是一把每次存储从当前页面加载所有链接到子页面,并检查使用window.open

var openedPages = [] 

function openUrl(url) 
{ 
    if (!isWindowActive(url)) 
    { 
    var win = window.open(url, '_blank') 

    // also it's good to prevent duplicate url's, but I omit that stuff for simplicity 
    openedPages.push({ 'url': url, 'win' : win }) 
    } 
} 

function isWindowActive(url) 
{ 
    for(var i = 0; i < openedPages.length; ++i) 
    { 
    var page = openedPages[i] 

    if (page.url === url) 
    { 
     return !page.win.closed 
    } 

    return false 
    } 
} 
+0

好吧,我错了。我写这个例子来解释:http://jsfiddle.net/wc70ef29/ – CodeColorist 2014-10-04 13:49:52

相关问题