8

私はカレンダーを持っています。 をクリックする<td>と、ポップアップ ウィンドウが表示され、選択した日付のイベントを作成できます。機能を追加したい。

ユーザーがイベントの作成を終了したら、JavaScript リクエストを親ページに送信して、AJAX を使用してカレンダーを更新できるようにします。基本的に子から関数を呼び出したいのですが、関数が親ページにあります。

Google では、親ウィンドウを更新できるスクリプトしか見つかりませんでした。「親コールバック」については何もありません。☹ 可能ですか?

PS答えは純粋なJSまたはjQueryのいずれでもかまいません。その間ずっと探します。

4

1 に答える 1

13

探しているのはwindow、ポップアップ ウィンドウを開いた への参照です。それができたら、そのウィンドウで関数を呼び出したり、そのウィンドウで変数を読み書きしたり、その DOM を操作したりすることさえできます。

その参照は と呼ばれopenerます。現在windowのウィンドウを開いたウィンドウのオブジェクトを提供します。たとえば、元のウィンドウに次のような関数があるとします。

function updateMe( data ) {
    alert( data );
}

次に、ポップアップウィンドウで次のように呼び出すことができます:

opener.updateMe( 'Hello!' );

updateMe()当然、それが元のページのグローバル関数であることを確認する必要があります。または、元のページに何らかのオブジェクトがあり、updateMe()それがそのオブジェクトのメソッドである場合、オブジェクトがグローバルである限り、それを行うことができます。たとえば、ホスト ページで:

var myObject = {
    updateMe: function( data ) {
        alert( data );
    }
};

次に、ポップアップで次のことができます。

opener.myObject.updateMe( 'Hello!' );

基本的に、元のページで を使用してオブジェクトまたは機能にアクセスできる限りwindow.whatever、ポップアップでそれを に変更するだけですopener.whatever

于 2013-06-13T21:19:20.473 に答える