0

私は次のようにjavascriptで新しいウィンドウを定義しました:

var r = window.open("", "rgroup", "status=1,width=800,height=600");

特定の出力を出力する関数があり、次のように実行しようとしています。

r.onload = runproduct();

ただし、メインの親ウィンドウでは引き続き実行されます。

追加する必要があります。親ウィンドウから実行する順序を指定しようとしているのではなく、2番目の新しいウィンドウから実行するようにしているので、短くするために、次のようにします。

1)メインウィンドウ(機能はここに表示されます)

2)2番目のウィンドウ(ここから注文します)

3)3番目のウィンドウ(これは、出力を実行したい場所です)

修正は簡単ですか?メインから2番目のウィンドウで関数を実行するように命令を出すと機能するのはなぜか頭を悩ませていますが、2番目のウィンドウから3番目のウィンドウに命令を与えるとうまくいきません...

ご不明な点がございましたら、よろしくお願いいたします。これは少し紛らわしいです...

4

1 に答える 1

1

関数は、実行時ではなく、作成時に変数コンテキストを囲みます。runproduct()つまり、作成中のコンテキスト (メイン ウィンドウ) の変数スコープ チェーンを使用しています。いつ実行されるかに関係なく、グローバルまたはその他のクロージャー変数への参照は、メイン ウィンドウの状態になります。

これを修正するrunproduct()には、ウィンドウ参照を明示的に参照する関数を記述します。例えば

var r;
function runproduct() {
  console.log(window); // refers to main window
  console.log(r); // refers to second window
}
r = window.open(...etc...);
于 2012-12-19T21:01:16.450 に答える