How to change browser focus from one tab to another

前端 未结 6 624
暗喜
暗喜 2020-11-28 14:01

I have a JavaScript chat client running in one browser tab (call it tab A). Now when a message arrives the user might be on another browser tab (call it tab B). I\'m looking

相关标签:
6条回答
  • 2020-11-28 14:40

    It is not possible - due to security concerns.

    unless by "tab" you mean a window and a popup window that (due to browser preferences) opened up in a new tab. If this is the case, then yes you can.

    //focus opener... from popup
    window.opener.focus();
    
    //focus popup... from opener
    yourPopupName.focus(); 
    
    0 讨论(0)
  • 2020-11-28 14:43

    It is possible to shift focus back to Tab A by means of an alert in Tab A e.g. alert('New Message')

    However, you need to be careful using this as it is very likely to annoy people. You should only use it if you make it optional in your app. Otherwise, updating Tab A's title and/or the favicon would appear to be best as nc3b says.

    0 讨论(0)
  • 2020-11-28 14:43

    Chrome and firefox now have notifications. I think notifications are probably a more user friendly way to alert the user that something has changed on your app than popping an alert and forcing them to your page.

    0 讨论(0)
  • 2020-11-28 14:53

    Using Javascript, triggering an alert can have the desired effect. Run this code in your console, or add to your html file in one tab and switch to another tab in the same browser.

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

    The alert appearing after the timeout will trigger tab switch. Or you can do something similar! For UX reasons however, you can still use a ping or add and indicator like in Facebook's message counter in the page title ( (1) Facebook ). You can also experiment with Notifications API (experimental).

    0 讨论(0)
  • 2020-11-28 14:55

    this worked for me on form submit to reopen the target window.. so it will call window.open on the same target (or new if changed) and then continue to submit the form.

            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>

    0 讨论(0)
  • 2020-11-28 14:59

    The best you could would probably be to change the title of the page alerting the user the tab needs attention (maybe also the favicon - look at how meebo does it, it's really annoying but effective)

    0 讨论(0)
提交回复
热议问题