One.htmlとtwo.htmlの2つのページがあります。
次のコードを使用して新しいウィンドウを開いています
//here popup is a global variable
popup=window.open('two.html','two');
初めてポップアップウィンドウが正常に開いてフォーカスを取得しますが、既に開いているポップアップを閉じずにもう一度開くと、two.htmlが2回目にフォーカスを取得しません。
注:ポップアップウィンドウの名前を「2」に設定しました
以下で使用されるfocus
関数を使用して達成できます
<script language="javascript" type="text/javascript">
<!--
function popitup(url) {
newwindow=window.open(url,'name','height=200,width=150');
if (window.focus) {newwindow.focus()}
if (!newwindow.closed) {newwindow.focus()}
return false;
}
// -->
</script>
focusedWindow = window.open('two.html','two').focus();
Focus。)をwindow.openプロトタイプに直接追加する
常に機能する私の経験的ソリューション:
_setTimeout('detail.focus()', 1);
_
Openの直後に.focus()
を追加しても、常に機能するわけではなく、setTimeoutなしで.focus()
を呼び出すこともできません。
私はそれが醜いことを知っており(数年後、今すぐにそれを取り除き、成功しなかった)、理由と方法を正確に知らないが、それは機能する。
関数を呼び出すときにポップアップが既に開いているかどうかを確認する場合は、開く前にポップアップを閉じることができます。
var popup;
function openPop() {
if ("close" in popup) popup.close();
popup = window.open("http://stackoverflow.com", "test", "width=200, height=200");
}
これにより、ポップアップが常に上部に表示されます。
var win = window.open('two.html','two');
win.document.getElementsByTagName("body")[0].focus(); //focus the body rather than the window.
Firefox 2の設定を確認してください
「ウィンドウを上げるまたは下げる」設定がオフの場合、これによりwindow.focus()メソッドが無効になります。
window.open行に.focus()を追加するだけですwindow.open('two.html','two').focus()
私は同じ問題を抱えていましたが、これはFirefoxとChromiumの両方のWebブラウザーで機能するようです。私のウェブ thaiiceland.com ポップアップが開いている場合、フォーカスがポップアップに移動せず、そのリンクをクリックしても何も起こらないことに気付きました。だから私は検索して、window.open行の最後に.focus()を追加しようとすると、うまくいきます。
<a href="currency.html" onclick="javascript:void window.open('currency.html','thaiice02','width=900,height=560,scrollbars=1,resizable=1,top=80,left=150').focus();return false;">Curency converter - แปลงสกุลเงิน</a>
残念ながら、最近の一部のブラウザーはまだフォーカスタブをサポートしていません。たとえば このFirefoxのバグエントリ を参照してください。
ただし、次のコードは私にとってはうまく機能しています。回避策として、フォーカスできない場合はウィンドウ/タブを再度開きます。
_ var win = window.open("two.html", "two")
win.focus();
setTimeout(function() {
if(document.hasFocus()) {
win.close();
window.open("two.html", "two")
}
}, 1);
_
最初の行でウィンドウを開き、2番目の行を使用してフォーカスを試みます。 two
という名前のウィンドウがすでに存在する場合、新しいウィンドウ/タブは開かれませんが、再利用されます。
トリックは、現在のウィンドウがdocument.hasFocus()
を使用してまだフォーカスを持っているかどうかをチェックすることです。その場合は、ウィンドウを閉じて再度開きます。これは、直接再利用されるタブへのフォーカスをサポートしていないブラウザのみです。現在、これはFFおよびIE/MS Edgeの場合です。 Chromeはうまく機能します。
ただし、_window.open
_を使用した直後は、document.hasFocus()
は常にtrueを返します(Chromeでもそうです)。回避策は、1 ms後にsetTimeout
を使用することです。
私はうまくいく自分のための答えを見つけました。ポップアップ本文のhtmlで、本文タグにonload = "this.window.focus()"を追加します。ウィンドウを最小化しても、前面と中央にポップアップします。必ず、実行スクリプトでウィンドウに名前を付けてください。window.open( 'url'、 'some name'、 'vars');これがあなたに役立つことを願っています!
setTimeout(function () {
window.open('PageName', '', 'height=560,width=1120,resizable=no,left=100,top=50,screenX=100,screenY=50');
}, 100);
->このコードは、新しく開いたウィンドウにフォーカスを当てるために使用されます。 -> javascriptに入れます。( 'setTimeout is inbuilt function of javascript')->ポップアップウィンドウを開くと、古いウィンドウの背後に移動することがよくあります。そのため、上記は新しいウィンドウにフォーカスするのに非常に役立ちます。
それはワンライナーソリューションです、あなたのポップアップ変数に焦点を当ててください:
popup=window.open('two.html','two');
popup.focus();
これにより、ポップアップウィンドウが閉じていなくても、常にポップアップウィンドウが開きます。