我写了一个网页,其行为类似于一种自助服务终端:当它打开时,它会检测它是否是控制窗口。如果没有,它将加载控制窗口页面,并在新窗口中再次打开索引页面,以便它可以检测到开启指针。然后,第二个窗口包含一个链接,该链接在第三个窗口中打开任意URL。我的控制器窗口检测第二个窗口是否打开,如果任何其他窗口被聚焦,它会将该窗口带回到前面。
这个任意网站在流程的某个时刻打开另一个测验窗口(不受我的网站控制),但这个新窗口不断被推到后面,因为我的代码不断向前推进我的第二个窗口。是否有任何方式我可以检测第二个窗口是否打开了另一个窗口,如果是,请阻止我的窗口获得焦点?
以下代码在主页面上运行(index.php)
var bypass = <?=($b==1?'true':'false')?>;
if(!bypass && !window.opener && navigator.appVersion.indexOf('Mac') != -1){
window.location = '/labs/rearWindow.php';
}
下面是我的代码,它在控制器窗口(rearWindow.php)上运行
var mainWindow = null;
var accelWindow = null;
var windowSettings = 'channelmode=yes,fullscreen=yes,height='+screen.availHeight+',width='+screen.availWidth+',left=0,top=0';
$(document).ready(function(){
window.moveTo(0,0);
window.resizeTo(10, 10);
checkWindow();
});
function checkWindow(){
if(mainWindow == null || mainWindow.closed){
// If the main window doesn't exist or it's been closed, open new window to the index
mainWindow = window.open('/labs/index.php', 'mainLabWindow', windowSettings);
if(!mainWindow){
// If the window didn't open in the satement above (usually because pop-ups are blocked), open up current window to an alternate url
window.location = '/labs/index.php?b=1';
}
}else if(mainWindow != null && !mainWindow.closed && accelWindow != null && !accelWindow.closed){
// If main window is already open and it hasn't been closed and the AR window has been opened and hasn't been closed
accelWindow.focus();
}else if(mainWindow != null && !mainWindow.closed && accelWindow != null && accelWindow.closed){
// If main window has been opened and hasn't been closed and AR window has been opened but has been closed; then go back to main window
accelWindow = null;
mainWindow.focus();
}else if(mainWindow != null && !mainWindow.closed){
// If main window has been opened and has not been closed
mainWindow.focus();
}
setTimeout(checkWindow, 500);
}
非常感谢您的帮助和反馈。
在第一个if中,如果我调用accelWindow.focus(),我想检查accelWindow是否有子窗口(这意味着他们打开了测验),如果是,则不要调用accelWindow.focus( )。
PS这是我的第一篇帖子/问题:)
答案 0 :(得分:0)
你可以在同一个浏览器窗口内的某种框架中,在同一个应用程序中显示那些“windows”内容..你可以使用一个ligthbox。 使用基于浏览器的应用程序可以使用更多窗口,这似乎很不舒服。