我有一个HTML页面,可以弹出一个应用程序的全屏窗口。我想要做的是检测弹出窗口何时关闭并重新打开它。
var drawingwindow;
function popup(url)
{
params = 'width='+screen.width;
params += ', height='+screen.height;
params += ', top=0, left=0'
params += ', fullscreen=yes';
params += ', resizeable=no';
newwin=window.open(url,'drawingwindow', params);
if (window.focus) {newwin.focus()}
return false;
}
然后我从HTML按钮触发弹出窗口
<input type="submit" name="submit" value="Submit" onclick="popup('hello.php')"/>
我想要做的是以某种方式检查绘图窗口的第一页 - 如果它关闭 - 立即重新打开它。它是主画布“drawingwindow”上绘图应用程序的一部分,它可以永久关闭绘图窗口。
答案 0 :(得分:1)
最近浏览器安全方面的改进意味着你可以做得很好。
您可以检测到弹出窗口已关闭:
var popupWindow;
var pop = function () {
popupWindow = window.open("example.html"); // has to be on same domain as original file
// setting a popupWindow.onclose event doesn't work (it
// fires immediately). You can fake it by observing some
// known property of the popup window, such as its location:
var fakeOncloseEvent = window.setInterval(function () {
if (!popupWindow.location) {
// The popup was closed.
window.clearInterval(fakeOncloseEvent); // tidy up
pop(); // <-- But this won't work!
}
}, 250);
}
在大多数浏览器中都会阻止重新打开弹出窗口,因为您只能通过直接用户操作(即点击)来打开新窗口。 (您可以使用上述内容指导用户自行重新打开弹出窗口,可能是通过突出显示&#34;打开弹出窗口&#34;链接,但您无法为他们打开它。)
或者你可以从另一端解决问题,并将代码放在弹出窗口中以防止它关闭。但是大多数浏览器严格限制您在onbeforeunload
事件中允许执行的操作 - 您几乎只限于抛出确认对话框:
window.onbeforeunload = function() {
// Just return the string, don't return a confirm() here.
// Various browsers will include their own additional text
// in the confirm dialog, and some may ignore your added text altogether.
return "Are you sure you want to close this beautiful popup?";
}