親ウィンドウにフォーカスが当たっても子ウィンドウを表示し続ける方法は?
javascriptで、親ウィンドウからopenで子ウィンドウを開いた後、親ウィンドウにfocus()します。
このとき、子ウィンドウを前面に表示し続ける方法を探しています。
ブラウザはIE11です。
具体的には、子ウィンドウを開くときに、setTimeoutで3秒後に親ウィンドウにfocusしています。
このとき子ウィンドウはフォーカスを失うから、window.onblurかdocument.onfocusoutで
子ウィンドウにfocusすれば前面に表示し続けられると考えました。
それで、親ウィンドウと子ウィンドウを下記のようにしました。
親ウィンドウ(parent.html):
<html>
<body>
<a href="javascript:void(0);" onclick="openCF();">子ウィンドウを開く</a>
<script type="text/javascript">
function openCF() {
open("./child.html", "_blank", 'width=200,height=200');
setTimeout(function(){
window.focus();
},3000);
}
</script>
</body>
</html>
子ウィンドウ(child.html):
<html>
<body>
<p>子ウィンドウ</p>
<script type="text/javascript">
window.focus();
window.onblur = getFocus1;
document.onfocusout = getFocus2;
function getFocus1(){
window.focus();
}
function getFocus2(){
window.focus();
}
</script>
</body>
</html>
これをIE11で実行すると、子ウィンドウを開いてから3秒後、予想に反して子ウィンドウは
親ウィンドウの後ろに隠れてしまいます。
ただし、子ウィンドウが前面に表示されているときに後ろの親ウィンドウを選択したときは、
子ウィンドウは隠れずに表示され続けます。
親ウィンドウにfocusしても子ウィンドウが隠れないようにすることはできないでしょうか?
追記
上記URLを参考にして、一定時間ごとに子ウィンドウにフォーカスが当たっているかをチェックし、外れていたらフォーカスを当てるという処理にしてみました。
parent.htmlを下記のようにしました。
<html>
<body>
<a href="javascript:void(0);" onclick="openCF();">子ウィンドウを開く</a>
<script type="text/javascript">
function openCF() {
var childWindow = open("./child.html", "_blank", 'width=200,height=200');
setTimeout(function(){
window.focus();
},3000);
var interval = setInterval(function()
{
// 子画面にフォーカスを当てる
if(childWindow != null && !childWindow.document.hasFocus())
{
childWindow.focus();
}
},100);
}
</script>
</body>
</html>
setIntervalを使って、子ウィンドウを0.1秒ごとにチェックし、フォーカスが当たっていなければfocus()します。
これで実行してみると、子ウィンドウにフォーカスを当てる処理は動いているようなのですが、それでも子ウィンドウは前面には来ませんでした。
フォーカスが当たっていることと、ウィンドウが最前面に表示されることは必ずしも一致しないのか、と思ってさらに調べています。
引き続き、ご回答いただけると幸いです。