2017-08-04 79 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