Открыть несколько ссылок в Chrome сразу как новые вкладки

Я пытаюсь открыть несколько ссылок сразу в Google Chrome на новых вкладках, но это не удается.

проблемы:

  1. заблокирован popup
  2. открыть в новых окнах вместо вкладки после того, как пользователь разрешил всплывающее окно

С этой, я могу открыть несколько ссылок сразу в Firefox:

<!DOCTYPE html>
<html ng-app="plunker">

<head>
    <meta charset="utf-8">
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" >');</script>
    <link rel="stylesheet" href="style.css">
    <script data-require="angular.js@1.2.x" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.min.js" data-semver="1.2.17"></script>
    <script src="app.js"></script>
</head>

<body ng-controller="MainCtrl">
    <button ng-click="openLinks()">Open</button>
</body>

</html>

кроме того, я наткнулся на кого-то, кто нашел решение.

Я попытался с помощью setInterval чтобы попытаться открыть ссылки по отдельности, но это не сработало.

4 ответов


вы можете сделать это в ванильном JavaScript:

<html>
<head>
<script type="text/javascript">
function open_win() {
    window.open("http://www.java2s.com/")
    window.open("http://www.java2s.com/")
}
</script>
</head>

<body>
<form>
<input type=button value="Open Windows" onclick="open_win()">
</form>
</body>

</html>

вот более специфичная для Chrome реализация (если блокировщики всплывающих окон дают вам трудности):

var linkArray = []; // your links
for (var i = 0; i < linkArray.length; i++) {
    // will open each link in the current window
    chrome.tabs.create({
        url: linkArray[i]
    });
}

вот некоторые документы:https://developer.chrome.com/extensions/tabs


причина, по которой расширение браузера может сделать это, потому что Chrome extensions есть доступ к специальному API Chrome, которые можно использовать:

chrome.windows.create({tabid: n})

здесь createData есть tabid значение больше, чем любая текущая вкладка (и вы можете найти наибольший ток tabid используя chrome.windows.getAll()).

однако, с точки зрения этого на Вашей странице (или в любом месте, которое не является расширением Chrome), это невозможно, так как откроется ли новое окно в a новая вкладка полностью определяется настройками пользователя.


следующий код откроет несколько всплывающих окон при нажатии кнопки.

<html>
<head>
<title></title>
<script type="text/javascript">
  function open_win() {
 window.open("url","windowName","windowFeatures")
 window.open("url","DifferentWindowName","windowFeatures")// different name for each popup
}
</script>
</head>

<body>
<form>
<input type=button value="Open Windows" onclick="open_win()">
</form>
</body>

вам нужно убедиться, что каждое имя окна отличается, иначе последнее всплывающее окно перезапишет предыдущее всплывающее окно. В результате вы получите одно всплывающее окно.


похоже, что расширение использует код ниже, чтобы открыть эти вкладки.

function openTab(urls, delay, window_id, tab_position, close_time) {
    var obj = {
            windowId: window_id,
            url: urls.shift().url,
            selected: false
    }

    if(tab_position != null) {
        obj.index = tab_position
        tab_position++;
    }

    chrome.tabs.create(obj, function(tab) {
        if(close_time > 0) {
            window.setTimeout(function() {
                chrome.tabs.remove(tab.id);
            }, close_time*1000);
        }
    });

    if(urls.length > 0) {
        window.setTimeout(function() {openTab(urls, delay, window_id, tab_position, close_time)}, delay*1000);
    }

}

Если вы хотите взглянуть на код расширения для справки вы найдете модули (для Windows) C:\Documents and Settings\*UserName*\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions