2013-06-13 18 views
8

私はカレンダーを持ち、<td>をクリックすると、選択した日付の偶数を作成できるようにポップアップウィンドウが表示されます。私は機能を追加したい。子ウィンドウからの親ウィンドウのJavaScriptを呼び出す

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

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

P.S.答えは、純粋なJSまたはjQueryにすることができますが、それは問題ではありません。私はその間に見ていきます。

+0

@Neal Davidは「親コールバック」のようなものについてはグーグルで言った。彼の検索が徹底していれば妥当な努力だと思う。私が知る限り、Davidはカレンダーを更新して表示する完全なコードを求めていません。彼は、ポップアップウィンドウが親ウィンドウ内で関数を呼び出す一般的な方法を求めています。 –

+0

これは非常に有効な質問で、たくさん回りましたが、なぜそれが下落したのか分かりません。今後のバージョンのブラウザでは、javascriptがより深いレベルでウィンドウイングプラットフォームとやりとりできることが分かります。 – OneChillDude

+0

この質問をお守りいただきありがとうございます。私はちょうど "方法"を要求していますが、コードは必要ありません...そして、私はいくつかの研究を行いました。私が見つけたのは、親ウィンドウをどのようにリフレッシュするかということでした。私は何も見つけていない。今後は、この質問がGoogleのトップ検索となり、より多くの人々を必要とするようになることを願っています。 –

答えて

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に変更することができます。

+1

MDNの[window.opener'のドキュメント](https://developer.mozilla.org/en-US/docs/Web/API/window.opener) –

+0

ありがとうございます。私が見ているものから、これは私が探していたものです。私は仕事で明日それを試してみましょう! –

+0

それは魅力のように機能します!ありがとう、私は今日何かを学びました! –

関連する問題