Prevent window.open from focusing

老子叫甜甜 提交于 2019-12-17 11:50:24

问题


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


回答1:


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: link, selected: false});
    }
});



回答2:


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

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




回答3:


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.



回答4:


Yes you can do that just use:

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



回答5:


Try this: (checked on chrome only)

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



回答6:


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



来源:https://stackoverflow.com/questions/6897430/prevent-window-open-from-focusing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!