Google Chromeの新しいタブで複数のリンクを一度に開こうとしていますが、失敗します。
問題点:
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
を使用してリンクを個別に開こうとしましたが、うまくいきませんでした。
これは、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
ブラウザー拡張機能で実行できる理由は、Chrome拡張機能 特別なChrome API にアクセスできるため、 :
_chrome.windows.create({tabid: n})
_
ここで、createData
の現在のタブよりも大きいtabid
値があります(chrome.windows.getAll()
を使用すると、現在の最大のtabid
を見つけることができます)。
ただし、ページ(またはChrome拡張機能ではない場所)で実行するという点では、 新しいウィンドウが新しいタブで開くかどうかはユーザーの設定によって完全に決定されます 。
複数のタブまたはウィンドウを開く最良の方法は、500msのsetTimeout()
を使用することです。
window.open("facebook.com","one","windowFeatures")
setTimeout(function(){ window.open("facebook.com","two","windowFeatures") }, 500);
次のコードは、ボタンをクリックすると複数の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>
各ウィンドウ名が異なることを確認する必要があります。異なる場合は、最後のポップアップが以前のポップアップを上書きします。その結果、単一のポップアップが表示されます。
ユーザーはポップアップを許可する必要がありますが、私はこれを行うことになりました:
function openMultipleTabs(urlsArray){
urlsArray.forEach(function(url){
let link = document.createElement('a');
link.href = url;
link.target = '_blank';
link.click();
});
}