繁体   English   中英

当弹出窗口完成父启动的加载时,如何通知父页面?

[英]How can I notify the parent page when a popup has finished a load which the parent initated?

我的主HTML页面执行以下操作:

var popup = window.open(...);
// Wait for popup to load
popup.onload = function() { do_something(); };
popup.location = "new-page.html";

我想在new-page.html加载完成后调用do_something 但是我现在所做的并不起作用 - do_something永远不会被调用。

我怎样才能做到这一点?

我只关心让它在FF 3.5中工作,如果这让事情变得更容易。

您可以使用window.opener。<functionName>并将您的通知代码放在父页面上的该函数中

你尝试过使用开启对象吗?

http://www.webreference.com/js/tutorial1/opener.html

或者,在不弄乱子窗口的HTML的情况下,您可以在父项的load事件上附加监听器。 在这个解决方案中,我将使用jQuery简单,但任何库甚至手动事件附件都可以。

在父母的HTML中:

<iframe id="foo"></iframe>
<script type='text/javascript'>
    var element = $("#foo");
    element.load( function( eventObject ) { 
        // do something here
    } );
    // Now that the event listener is attached, we can set the source.
    element[0].src = "foo.html";

</script>

注意,我没有尝试先设置源,然后附加监听器,我不确定这是否可以保证始终有效。 可能会发生在加载加载侦听器之前创建/加载iframe,我不确定。 但是,通过在连接侦听器后设置src,我确信将调用加载侦听器。

巴蒂尔

http://www.shanetomlinson.com

http://www.ubernote.com

尝试在弹出的onload中调用doSomething方法。 您可以使用window.opener返回父级

在你加载的.html中,你可以在开头窗口调用一个函数(如果存在的话)末尾有一个简单的一个衬里

<script type='text/javascript'>
if (window.opener && window.opener.do_something) window.opener.do_something(window);
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM