Предотвратить фокусировку window.open - PullRequest
10 голосов
/ 01 августа 2011

Я хочу открыть страницу в новой вкладке в Google Chrome с помощью window.open (), но не хочу, чтобы это окно получало фокус после его открытия, а оставалось на заднем плане.

Возможно ли это? Это должно работать только на Google Chrome. Он также может использовать API расширения Google Chrome.

Спасибо

Ответы [ 6 ]

10 голосов
/ 01 августа 2011

Правильным способом было бы использовать расширение 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});
    }
});
3 голосов
/ 01 августа 2011
window.open(url, name, features);
window.focus();

Вы увидите новое окно на короткое время.

2 голосов
/ 01 августа 2011

Выход есть во всех браузерах

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.
1 голос
/ 14 марта 2016

Да, вы можете сделать это просто используя:

var myWindow = window.open(url,name,features);
myWindow.blur();
0 голосов
/ 16 августа 2017

Попробуйте: (проверено только на Chrome)

var myWindow = window.open(url,name,features);
window.open().close();
0 голосов
/ 01 августа 2011

Активировать родительское окно от дочернего или активировать себя после открытия дочернего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...