0

我有两个 windows ,第二个是 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。
  • 正如您在代码中看到的那样,我用 WrappedWindowOpen 包装了实际的 window.open。
  • 在调用 window.open 之前,调用者将 popupFnCreationNotify 设置为他们希望的任何回调函数。
于 2012-08-30T18:53:20.897 回答