0

私には2つのウィンドウがあり、2つ目は popup で、親からイベントをトリガーしたい(このポップアップへのリンクがある最初のもの)。

トリガーの JavaScript コードは次のとおりです (親ウィンドウの JavaScript コード内):

winPop=window.open(opts.url,opts.nom,"width="+opts.width+",height="+opts.height+",top="+opts.top+",left="+opts.left);

    winPop.onload=function(){

     $(winPop.document).trigger('connected', {
      jid: "jid",
      password: '123'
     });

    }

この JavaScript コードは、ポップアップを起動し、ポップアップ (準備完了) 関数にバインドされたイベントをトリガーしようとします。

$(document).ready(function () {
 $(document).bind('connected', function () {
  alert("Hello , I'm here");
 });

問題は、以前の JavaScript コードを使用すると、バインドされたイベントが予測どおりにトリガーされないことです。

前もって感謝します

4

1 に答える 1

1

私はこれを以前に次のようなもので行っていました:

var realWindowOpen = window.open;
window.open = wrappedWindowOpen;
function wrappedWindowOpen(url, name, specs, replace) {
    window.open = realWindowOpen;
    var windowHandle = window.open(url, name, specs, replace);
    if (windowHandle)
        console.log("New Popup Window created: ", {name:name});
    else
        console.error("New Window Failed. " + {name:name});

    if (popupFnCreationNotify) {
        popupFnCreationNotify(windowHandle);
        popupFnCreationNotify = null;
    }
    window.open = wrappedWindowOpen;
}

// Calling example
var popupFnCreationNotify = function() {
    console.log("I got called back");
};
window.open("my url");

ご注意ください:

  • realWindowOpen は常に window.open を指します。
  • コードでわかるように、実際の window.open を wrapdWindowOpen でラップします。
  • window.open を呼び出す前に、呼び出し元は popupFnCreationNotify を任意のコールバック関数に設定します。
于 2012-08-30T18:53:20.897 に答える