Javascript 如何在window.opener上附加事件
我有一扇窗户是靠窗户打开的Javascript 如何在window.opener上附加事件,javascript,jquery,popup,Javascript,Jquery,Popup,我有一扇窗户是靠窗户打开的 var myWindow = window.open( 'popupManager.htm', 'myWindow', 'status=0,toolbar=0,width=500,height=100'); 它将充当调试窗口 在内部,我想在window.opener上连接windows事件,但我无法实现这一点。两个URL位于同一域/同一网站中 例如,我可以
var myWindow = window.open(
'popupManager.htm',
'myWindow',
'status=0,toolbar=0,width=500,height=100');
它将充当调试窗口
在内部,我想在window.opener
上连接windows事件,但我无法实现这一点。两个URL位于同一域/同一网站中
例如,我可以很好地连接DOM元素
$("input[soid=DlgButtonBar_cancelButton]", window.opener.document).bind("click", function() {
alert('Cancel button was pressed!');
window.close();
});
但是我想连接到move
事件(window.onMove
)和close
事件
尝试
window.opener.addEventListener('move', function() { console.log('moving...'); });
没有运气
诀窍是什么?使用jQuery或简单javascript…监听窗口事件似乎不起作用。我使用此技巧收听窗口事件(在我的情况下卸载):
window.setTimeout(function(){
if(window.opener.closed == true) {
// Close event
} else {
// Navigation event
// window.opener.location to get new location
}
},500);
风险在于延迟,closed属性在卸载方法和事件挂钩执行后更改,因此如果延迟太短,您可能会在更改之前获得标志,如果延迟太长,则会获得不必要的延迟
我认为移动事件同样可以处理,希望这有帮助。如果这个方法有任何可能的改进,请告诉我。谢谢,祝你好运 为什么不为
move
事件使用bind
?因为如果您通过window.opener
像$(window.opener).bind(“move”,function(){…}),它就不起作用代码>
$("#unloader",window.opener.document).click(unloadEventHandler);
window.setTimeout(function(){
if(window.opener.closed == true) {
// Close event
} else {
// Navigation event
// window.opener.location to get new location
}
},500);