我的主HTML页面执行以下操作:
var popup = window.open(...);
// Wait for popup to load
popup.onload = function() { do_something(); };
popup.location = "new-page.html";
我希望在do_something
完成加载时调用new-page.html
。但是我现在所做的不起作用 - do_something
永远不会被调用。
我该如何做到这一点?
我只关心在FF 3.5中使用它,如果这样可以使事情变得更容易。
答案 0 :(得分:4)
你可以使用window.opener。< functionName>并将您的通知代码放在父页面上的该函数中
答案 1 :(得分:1)
您是否尝试过使用开启对象?
答案 2 :(得分:1)
或者,在不弄乱子窗口的HTML的情况下,从父级可以在iframe的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,我确信将调用加载侦听器。
沙恩
答案 3 :(得分:0)
尝试在弹出窗口的onload中调用doSomething方法。您可以使用window.opener
返回父级答案 4 :(得分:0)
在你加载的.html中,你可以在开头窗口调用一个函数(如果存在),在一端有一个简单的一个衬垫
<script type='text/javascript'>
if (window.opener && window.opener.do_something) window.opener.do_something(window);
</script>