2017-08-04 77 views
0

此功能在铬中工作,但在IE中不工作。 我试图避免打开多个窗口时单击乘法时间。 我希望它找到现有的打开窗口并使用它。专注于打开的窗口,而不允许另一个窗口打开不能在IE上工作

function newWindow() { 
 
    var tab; 
 
    tab = window.open('http://google.com', 'MyTab', 'height=800px,width=1500px,resizable=yes'); 
 
    tab.focus(); 
 
}
<body> 
 
    force to open tab in same window 
 
    <a href="#" onclick="newWindow();">New Window</a> 
 
</body>

回答

0

它的出现,是IE抛出试图重新打开tab时“拒绝访问”错误(由于跨域的内容,但为什么,目前尚不清楚)。这会停止脚本,并且从不执​​行tab.focus()

要解决此问题,的tab定义移动到外部范围,并包裹window.open(...)try..catch,像这样:

var tab; 
function newWindow() { 
    try { 
    tab = window.open('http://google.com', 'MyTab', 'height=800px,width=1500px,resizable=yes'); 
    } catch (err) {;} 
    if (tab) { 
    tab.focus(); 
    } 
} 

这样你可以存储原始tabtab.focus()将带来其在屏幕上的主要风的前面。

+0

它不在IE中抛出错误,但仍然打开多个窗口,而不是使用当前打开的窗口。 –

+0

@EmilolaOsinowo当我在JSFiddle上运行代码时,出现“访问被拒绝”错误。当我如上所述添加错误处理时,everyhing在IE中也可以正常工作。关键是第二个参数,它是新创建的窗口的名称,如果每次打开窗口时都是相同的,浏览器应该打开一个现有的窗口而不是新的窗口。 IE并不例外,该功能在IE中已经支持很多年了。 – Teemu

+0

但是,有一个选项可能会覆盖此行为。打开“Internet选项”,然后在“常规”选项卡上,单击“选项卡”按钮,在那里您可以找到一些选项来处理弹出窗口。 (文本可能在按钮上有所不同,我现在没有英文版的IE浏览器。) – Teemu