3

私のメイン 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 で動作させることだけに関心があります。

4

5 に答える 5

4

window.opener.<functionName> を使用して、親ページのその関数内に通知コードを配置できます

于 2009-08-12T19:37:03.873 に答える
1

または、子ウィンドウの HTML をいじることなく、親から iframe のロード イベントにリスナーをアタッチできます。このソリューションでは、簡単にするために 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

于 2009-08-12T20:14:48.413 に答える
1

opener オブジェクトを使用してみましたか?

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

于 2009-08-12T19:38:36.927 に答える
0

ポップアップのオンロードで doSomething メソッドを呼び出してみてください。window.opener を使用して親に戻ることができます

于 2009-08-12T19:40:17.127 に答える
0

読み込まれた .html では、最後に単純な 1 つのライナーを配置して、開いているウィンドウで関数を呼び出すことができます (存在する場合)。

<script type='text/javascript'>
if (window.opener && window.opener.do_something) window.opener.do_something(window);
</script>
于 2009-08-12T19:45:08.927 に答える