2013-10-04 97 views
0

我需要完全加載後關閉一個新窗口。我有:如何在新窗口加載完成後執行某些操作?

my_window=window.open("http://www.yahoo.com", "_blank", "resizable=yes, scrollbars=yes, titlebar=yes, width=500, height=400, top=10, left=10"); 

我已經試過:

my_window.onload = my_window.close(); 

my_window.addEventListener('load', my_window.close(), true); 

既不等待MY-WINDOW14關閉之前完成加載(它關閉幾乎立即)。

第二個問題,我可以添加一個超時繼續並關閉新窗口,以防頁面停頓並且由於某種原因永不完全加載?

回答

0

如果窗口是在同一個域,您可以使用此:

my_window.onload = function() {my_window.close();}; 

或本:

my_window.addEventListener('load', function() {my_window.close();}, true); 

傳遞一個簡單的功能,當你不使用括號函數名後參考。當你在做的時候使用parens會導致函數立即執行。

我還添加了匿名函數,因此可以保留my_window上下文,直到函數執行時間。

如果您的窗口不在同一個域中,那麼您可能遇到same origin protections問題,它們阻止您訪問其他窗口的JavaScript。

+0

難道不會關閉'window'嗎?指定'= my_window.close;'會將沒有_context_的'close'賦給'onload',所以如果調用它,就會在默認的上下文('window')中調用它。或者這是一個特例? –

+0

@ t.niese - 是的,我修改了我的代碼以確保使用正確的上下文。 – jfriend00

+0

在my_window.onload = function(){my_window.close();};行之後執行任何更多腳本之前,這會等待窗口完全加載然後關閉嗎?我想打開另一個新窗口,但它必須在第一個完全加載後關閉。不幸的是,我目前無法訪問服務器進行測試,因爲它們必須全部位於同一個域中。 –

相關問題