JavaScriptで開かれる新しいウィンドウに「コールバック」関数を設定する簡単な方法はありますか?新しいウィンドウから親の関数を実行したいのですが、親がこの特定の関数の名前を設定できるようにしたいので、新しいウィンドウページでハードコードしないでください。
たとえば、私は親で:
function DoSomething { alert('Something'); }
...
<input type="button" onClick="OpenNewWindow(linktonewwindow,DoSomething);" />
そして、私がしたい子ウィンドウで:
<input type="button" onClick="RunCallbackFunction();" />
問題は、このOpenNewWindow
関数とRunCallbackFunction
関数を作成する方法です。関数の名前をクエリパラメータとして新しいウィンドウ(サーバー側のスクリプトが生成された子のHTMLで適切な関数呼び出しを生成する場所)に送信することを考えましたが、別の方法、またはより良い方法があるかどうかを考えていましたこれは、サーバー側でのいじりさえも必要としないものかもしれません。
純粋なjavascript、サーバー側のソリューション、jQuery(またはその他のフレームワーク)はすべて歓迎されます。
コメントが更新されました:window.open()
でウィンドウを開いている場合、子ページで子の関数を親関数を指す参照に設定できるので、子ページに次のようにします。
var RunCallbackFunction = function() { }; //reference holder only
次に、親(オープナー)で、次のように、その子ウィンドウが読み込まれたときにその関数を設定します。
//random function you want to call
function myFunc() { alert("I'm a function in the parent window"); }
//to actually open the window..
var win = window.open("window.html");
win.onload = function() { win.RunCallbackFunction = myFunc; };
これにより、親の関数がその子のターゲットになるように割り当てられます。必要に応じて、各子を異なる関数にポイントできます。これらはすべて独立しています。