2010-10-13 91 views
1

我試圖做這樣的事情IE7 window.open時.focus返回null

win = null; 
win = window.open('/url/to/link','tab'); 
win.focus(); 

但在IE7它在win.focus線返回我();贏的錯誤是空的。

我該如何解決?

在此先感謝!

+0

窗戶打開嗎?在任何情況下,Firefox,Chrome和Safari都不適用 - 它們通常不允許窗口強制另一個窗口獲得焦點。 – Pointy 2010-10-13 11:59:50

回答

1

你可以嘗試添加一個輕微的延遲,以確保窗口開啓

//win = null; <--useless 
win = window.open('/url/to/link','tab'); 
if(win)window.focus(); 
else{ 
    var timer = window.setTimeout(function(){ if(win)win.focus(); }, 100); 
} 

這一天在年齡層面,大多數人避免彈出窗口並使用模態圖層。

2

塊引用< 返回值

返回到新窗口對象的引用。使用此引用來訪問新窗口上的屬性和方法。

在Windows Vista上的Internet Explorer 7:從應用程序(比Internet Explorer進程等)打開一個新的窗口可能會導致空返回值。出現此限制是因爲默認情況下,Internet Explorer在保護模式下運行。保護模式的一個方面是防止應用程序在訪問跨越進程邊界時對Internet Explorer進行特權訪問。使用此方法打開一個新窗口會生成一個新過程。有關保護模式的更多信息,請參閱瞭解和使用保護模式Internet Explorer。這通常發生於承載WebBrowser控件的應用程序。> Window.Open method documentation

+0

很棒的發現,感謝發佈這個 – Drew 2010-10-13 17:08:33

+0

這是什麼'Blockquote <返回值?請你可以提供更多信息。 – 2016-06-08 10:06:02

+0

第一行應爲「返回值」。它只是對我在文檔中鏈接到頁面一半的段落的引用,這就解釋了爲什麼「返回值」可能爲空。 – smirkingman 2016-06-09 07:10:43

0

當您啓動一個彈出窗口,給它一個變量名:

myWin = window.open(etc) 

//in the child window, call window.opener.myFocusFunction() 
//in the parent window, use this... 

function myFocusFunction(){ 
    myWin.focus(); 
    //myWin.blur(); 
    //uncomment as needed! 
} 

有一齣戲,它爲我工作。