13

I want to open a page in a new tab in Google Chrome with window.open(), but I don't want that window to gain focus after it's opened, but to stay in the background.

Is this possible? It only has to work on Google Chrome. It can also use the Google Chrome extension API.

Thanks

Nicu Surdu
  • 8,172
  • 9
  • 68
  • 108

5 Answers5

12

The proper way would be to use extension API:

chrome.tabs.create({url: "http://...", selected: false});

Code should be placed in a background page. If you need it inside a content script you can pass a message to a background page, like so:

//content script
chrome.runtime.sendMessage({link: link});

//background page
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    if(message.link) {
        chrome.tabs.create({url: message.link, selected: false});
    }
});
fatihsolhan
  • 565
  • 5
  • 19
serg
  • 109,619
  • 77
  • 317
  • 330
  • 2
    hey any generic way to do the above so that it will work for all browsers ? the focus function is not working for me – Deepanshu Goyal Mar 29 '13 at 05:57
  • 1
    @dcastro: Appreciate the example, but do not use years-deprecated APIs – Xan Feb 07 '16 at 12:26
  • @Xan Ah, sorry about that! I got those examples from a video from [google's own documentation](https://developer.chrome.com/extensions/content_scripts) (see the video at the bottom). I guess they haven't been keeping those up to date. – dcastro Feb 07 '16 at 20:45
2
window.open(url, name, features);
window.focus();

You will see the new window for a short moment though.

Amit
  • 1,174
  • 2
  • 15
  • 22
1

There is a way out in all the browser

function openURL(url, opt){
  if (opt == 0){ // current window
    window.location = url;
  }else if (opt == 1){ // new window
    window.open(url);
  }else if (opt == 2){ // background window
    window.open(url); self.focus();
  }
}

so By using this you can do anything you want.

openURL( "http://www.google.com", 0 ) --> open in same window
openURL( "http://www.google.com", 1 ) --> open in new window
openURL( "http://www.google.com", 2 ) --> open in new window but in background.
Talha Ahmed Khan
  • 15,043
  • 10
  • 42
  • 49
-1

Yes you can do that just use:

var myWindow = window.open(url,name,features);
myWindow.blur();
Jouhny_Jo
  • 7
  • 3
-3

Activate parent window from child or activate self once child is opened.

hungryMind
  • 6,931
  • 4
  • 29
  • 45