防止window.open聚焦

时间:2011-08-01 10:55:47

标签: javascript google-chrome google-chrome-extension

我想在Google Chrome浏览器的新标签页中使用window.open()打开一个页面,但我不希望该窗口在打开后获得焦点,而是留在后台。

这可能吗?它只需要在Google Chrome上运行。它还可以使用Google Chrome扩展程序API。

由于

6 个答案:

答案 0 :(得分:10)

正确的方法是使用扩展API:

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

代码应放在后台页面中。如果您在内容脚本中需要它,您可以将消息传递到后台页面,如下所示:

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

//background page
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    if(message.link) {
        chrome.tabs.create({url: link, selected: false});
    }
});

答案 1 :(得分:3)

window.open(url, name, features);
window.focus();

你会在短时间内看到新窗口。

答案 2 :(得分:2)

所有浏览器都有出路

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();
  }
}

所以通过使用它,你可以做任何你想做的事。

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.

答案 3 :(得分:1)

是的,你可以这样做:

var myWindow = window.open(url,name,features);
myWindow.blur();

答案 4 :(得分:0)

试试这个:(仅限镀铬)

var myWindow = window.open(url,name,features);
window.open().close();

答案 5 :(得分:-2)

从子项激活父窗口或在打开子项后激活self。