2013-10-04 67 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();};行之后执行任何更多脚本之前,这会等待窗口完全加载然后关闭吗?我想打开另一个新窗口,但它必须在第一个完全加载后关闭。不幸的是,我目前无法访问服务器进行测试,因为它们必须全部位于同一个域中。 –

相关问题