【发布时间】:2011-08-01 10:55:47
【问题描述】:
我想使用 window.open() 在 Google Chrome 的新标签页中打开一个页面,但我不希望该窗口在打开后获得焦点,而是留在后台。
这可能吗?它只需要在谷歌浏览器上工作。它还可以使用 Google Chrome 扩展 API。
谢谢
【问题讨论】:
标签: javascript google-chrome google-chrome-extension
我想使用 window.open() 在 Google Chrome 的新标签页中打开一个页面,但我不希望该窗口在打开后获得焦点,而是留在后台。
这可能吗?它只需要在谷歌浏览器上工作。它还可以使用 Google Chrome 扩展 API。
谢谢
【问题讨论】:
标签: javascript google-chrome google-chrome-extension
正确的方法是使用扩展 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: message.link, selected: false});
}
});
【讨论】:
window.open(url, name, features);
window.focus();
不过,您会在短时间内看到新窗口。
【讨论】:
所有浏览器都有出路
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.
【讨论】:
是的,您可以这样做,只需使用:
var myWindow = window.open(url,name,features);
myWindow.blur();
【讨论】:
从子窗口激活父窗口或在打开子窗口后激活自身。
【讨论】: