一種のキオスクとして動作するWebページを作成しました。開くと、それが制御ウィンドウであるかどうかを検出します。そうでない場合は、制御ウィンドウページをロードし、新しいウィンドウでインデックスページを再度開いて、オープナーポインタを検出できるようにします。2番目のウィンドウには、3番目のウィンドウで任意のURLを開くリンクが含まれています。コントローラウィンドウは、この2番目のウィンドウが開いているかどうかを検出し、他のウィンドウにフォーカスがある場合は、そのウィンドウを前面に戻します。
プロセスのある時点でこの任意のWebサイトは、クイズ用の別のウィンドウを開きます(私のサイトによって制御されていません)が、コードが2番目のウィンドウを前に出し続けるため、この新しいウィンドウは後ろに押し出され続けます。2番目のウィンドウが別のウィンドウを開いたかどうかを検出し、開いている場合は、ウィンドウがフォーカスされないようにする方法はありますか?
以下のコードはメインページ(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これは私の最初の投稿/質問です:)