web-dev-qa-db-ja.com

毎回ポップアップウィンドウのフォーカスを設定する

One.htmlとtwo.htmlの2つのページがあります。

次のコードを使用して新しいウィンドウを開いています

//here popup is a global variable
popup=window.open('two.html','two');

初めてポップアップウィンドウが正常に開いてフォーカスを取得しますが、既に開いているポップアップを閉じずにもう一度開くと、two.htmlが2回目にフォーカスを取得しません。

注:ポップアップウィンドウの名前を「2」に設定しました

16
hunt

以下で使用される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>
12
Pranay Rana
focusedWindow = window.open('two.html','two').focus();

Focus。)をwindow.openプロトタイプに直接追加する

8
RobertPitt

常に機能する私の経験的ソリューション:

_setTimeout('detail.focus()', 1);
_

Openの直後に.focus()を追加しても、常に機能するわけではなく、setTimeoutなしで.focus()を呼び出すこともできません。

私はそれが醜いことを知っており(数年後、今すぐにそれを取り除き、成功しなかった)、理由と方法を正確に知らないが、それは機能する。

6
Roman

関数を呼び出すときにポップアップが既に開いているかどうかを確認する場合は、開く前にポップアップを閉じることができます。

var popup;
​function openPop() { 
    if ("close" in popup) popup.close();
    popup = window.open("http://stackoverflow.com", "test", "width=200, height=200");​​​​​​​​
}

これにより、ポップアップが常に上部に表示されます。

2
Andy E
var win = window.open('two.html','two');
win.document.getElementsByTagName("body")[0].focus(); //focus the body rather than the window.
2
James

Firefox 2の設定を確認してください

  1. [ツール]-> [オプション]-> [コンテンツ]に移動します
  2. 「JavaScriptを有効にする」がオンになっていることを確認します。
  3. 「JavaScriptを有効にする」の横にある「詳細」ボタンをクリックします。
  4. ボックスにチェックマークがあることを確認してください[x]ウィンドウを上げるまたは下げる

「ウィンドウを上げるまたは下げる」設定がオフの場合、これによりwindow.focus()メソッドが無効になります。

1
Sachin Shanbhag

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>
1
thaiiceland

残念ながら、最近の一部のブラウザーはまだフォーカスタブをサポートしていません。たとえば この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を使用することです。

1
sibbl

私はうまくいく自分のための答えを見つけました。ポップアップ本文のhtmlで、本文タグにonload = "this.window.focus()"を追加します。ウィンドウを最小化しても、前面と中央にポップアップします。必ず、実行スクリプトでウィンドウに名前を付けてください。window.open( 'url'、 'some name'、 'vars');これがあなたに役立つことを願っています!

0
mdavis6763
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')->ポップアップウィンドウを開くと、古いウィンドウの背後に移動することがよくあります。そのため、上記は新しいウィンドウにフォーカスするのに非常に役立ちます。

0
user2338552

それはワンライナーソリューションです、あなたのポップアップ変数に焦点を当ててください:

popup=window.open('two.html','two');
popup.focus();

これにより、ポップアップウィンドウが閉じていなくても、常にポップアップウィンドウが開きます。