web-dev-qa-db-ja.com

Chromeで複数のリンクを一度に新しいタブとして開く

Google Chromeの新しいタブで複数のリンクを一度に開こうとしていますが、失敗します。

問題点:

  1. ポップアップによってブロックされました
  2. ユーザーがポップアップを許可した後、タブではなく新しいウィンドウで開く

this を使用すると、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="[email protected]" 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を使用してリンクを個別に開こうとしましたが、うまくいきませんでした。

13
user3522725

これは、Vanilla 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

27
Andrew

ブラウザー拡張機能で実行できる理由は、Chrome拡張機能 特別なChrome API にアクセスできるため、 :

_chrome.windows.create({tabid: n})
_

ここで、createDataの現在のタブよりも大きいtabid値があります(chrome.windows.getAll()を使用すると、現在の最大のtabidを見つけることができます)。

ただし、ページ(またはChrome拡張機能ではない場所)で実行するという点では、 新しいウィンドウが新しいタブで開くかどうかはユーザーの設定によって完全に決定されます

4
Patrick Collins

複数のタブまたはウィンドウを開く最良の方法は、500msのsetTimeout()を使用することです。

  window.open("facebook.com","one","windowFeatures")
  setTimeout(function(){   window.open("facebook.com","two","windowFeatures") }, 500);
0
Muhammad Qamar

次のコードは、ボタンをクリックすると複数のpopUpを開きます。

<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>

各ウィンドウ名が異なることを確認する必要があります。異なる場合は、最後のポップアップが以前のポップアップを上書きします。その結果、単一のポップアップが表示されます。

0
Raihan Ridoy

ユーザーはポップアップを許可する必要がありますが、私はこれを行うことになりました:

function openMultipleTabs(urlsArray){

    urlsArray.forEach(function(url){
        let link     = document.createElement('a');
        link.href    = url;
        link.target  = '_blank';
        link.click();
    });

}
0
Ale W