web-dev-qa-db-ja.com

ブラウザのフォーカスをあるタブから別のタブに変更する方法

1つのブラウザータブ(タブAと呼びます)でJavaScriptチャットクライアントを実行しています。メッセージが到着すると、ユーザーは別のブラウザータブ(タブBと呼ぶ)にいる可能性があります。このようなメッセージが届いたときに、フォーカスをタブBからチャットクライアント(タブA)に変更する方法を探しています。

これを行う方法が見つかりませんでした。

21
Max

ではありません可能です-セキュリティ上の理由によります。

unless "tab"とは、(ブラウザの設定により)新しいタブで開かれたウィンドウとポップアップウィンドウを意味します。これが事実である場合、はい、できます。

//focus opener... from popup
window.opener.focus();

//focus popup... from opener
yourPopupName.focus(); 
16
scunliffe

タブAのアラートを使用して、フォーカスをタブAに戻すことができます。アラート( '新しいメッセージ')

ただし、これは人を困らせる可能性が非常に高いため、注意して使用する必要があります。アプリでオプションにする場合にのみ使用してください。それ以外の場合、nc3bが言うように、タブAのタイトルやファビコンを更新するのが最善のようです。

7
Autoabacus

おそらく、タブに注意が必要であることをユーザーに警告するページのタイトルを変更することをお勧めします(おそらくファビコンも-meeboがどのように行うかを見てください。本当に面倒ですが効果的です)。

6
nc3b

ChromeとFirefoxに通知が届くようになりました。通知は、アラートをポップしてページに強制するよりも、アプリで何かが変更されたことをユーザーに通知するよりユーザーフレンドリーな方法だと思います。

6
CallMeNorm

これは、フォームの送信でターゲットウィンドウを再び開くために機能しました。同じターゲット(または変更されている場合は新規)でwindow.openを呼び出し、フォームの送信を続行します。

        var open_target = function (form){
            var windowName = jQuery(form).attr('target');
            window.open("", windowName );
            return true;
        };
    <form target="_search_elastic" onsubmit="return open_target(this);">
      </form>
4
Artistan

JavaScriptを使用して、アラートをトリガーすることにより、望ましい効果を得ることができます。コンソールでこのコードを実行するか、1つのタブでhtmlファイルに追加して、同じブラウザーで別のタブに切り替えます。

setTimeout(function(){ 
    alert("Switched tabs");
}, 
5000);

タイムアウト後に表示されるアラートは、タブの切り替えをトリガーします。または、あなたは同様のことをすることができます!ただし、UXの理由により、ページタイトルのFacebookのメッセージカウンターのように、pingまたは追加とインジケーターを引き続き使用できます((1)Facebook)。 Notifications API (実験的)を試すこともできます。

3
William