因此,无论何时为我的网站启用弹出窗口,我都会尝试进行测试。我的窗口应该被浏览器的弹出窗口拦截器阻止,除非它们已被允许。如果允许弹出窗口一切正常,因为我可以在我的父页面中直接打开窗口时进行测试。
问题是如果用户允许稍后通过允许打开弹出窗口打开弹出窗口,我仍然希望将测试标记为成功。我这样做的唯一方法就是在我的父页面上调用一些函数,但是以这种方式打开的窗口有null window.opener
,我不能直接从父窗口设置子窗口上的对象,因为我没有&# 39;不知道什么时候会打开。
以这种方式打开时,有没有办法从子窗口引用我的父窗口?
或者,只要子窗口成功打开,可以在父窗口上调用函数的任何其他解决方法? 也许事件事件我可以在打开这样的窗口时挂钩,但我找不到任何这样的事件。
示例代码:
function () {
var myWin = window.open('popupWin.html', '_blank', 'resizable=no,scrollbars=no,height=1,width=1', true);
if (!myWin || myWin == null || typeof (myWin) == 'undefined')
SetPopupResult(false);
else {
SetPopupResult(true);
myWin.close();
}
}
popupWin.html是一个空白页面,其中包含以下脚本:
<script>
window.opener.SetPopupResult(true); //throws Cannot read property 'SetPopupResult' of null
setTimeout(function () {
window.close();
}, 1000);
</script>
编辑:忘了在Google-Chrome中提到这个问题到目前为止,firefox似乎没有这个问题而且window.opener是正确的,IE的行为是不同的,因为它刷新页面并打开弹出窗口,就像它们已启用一样。