2012-08-30 40 views
0

我有两个窗口,第二个窗口是弹出窗口,我想从父窗口触发一个事件(第一个窗口中有一个链接)。触发父窗口中的事件

这里是为触发一个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代码launchs弹出,并试图触发弹出绑定一个事件(准备)功能:

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

问题是,使用以前的JavaScript代码..绑定事件不会按预期触发。

在此先感谢

+0

您是否包含jQuery库? –

+0

是当然的......所有的jQuery代码是工作在整个项目好,除了这一个 – SmootQ

回答

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。
  • 我用wrapWindowOpen封装了实际的window.open,如代码中所见。
  • 在调用window.open之前,调用者将popupFnCreationNotify设置为他们希望的任何回调函数。
+0

我不能从那里你得到了realWindowOpen变量理解和popupFnCreationNotify .. 还有,我用Jquery的,所以是否有任何方法使用jQuery来完成相同的任务? (我的意思是用一个触发器()函数) – SmootQ

+1

对不起,不清楚。查看更新后的答案。 – closure

+1

该代码与JQuery完全兼容,实际上是我的JQueryUI插件的一部分,名为PopupManager。早些时候,我刚刚从那里粘贴了代码,这就是为什么它很难理解。之前代码中的self实际上指向插件实例。 – closure

相关问题