it-swarm.com.de

Öffnen Sie in Chrome mehrere Links gleichzeitig als neue Registerkarten

Ich versuche, in Google Chrome mehrere Links gleichzeitig auf neuen Registerkarten zu öffnen, aber es schlägt fehl.

Probleme:

  1. Blockiert durch Popup
  2. Öffnen Sie in neuen Fenstern anstelle der Registerkarte, nachdem der Benutzer das Popup zugelassen hat

Mit this kann ich in Firefox mehrere Links gleichzeitig öffnen:

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

Außerdem bin ich auf jemanden gestoßen, der eine Problemumgehung gefunden hat.

Ich habe versucht, mit setInterval zu versuchen, die Links einzeln zu öffnen, aber es hat nicht funktioniert.

10
user3522725

Sie können dies in Vanilla JavaScript tun:

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

Hier ist eine weitere Chrome-spezifische Implementierung (falls Popup-Blocker Schwierigkeiten verursachen): 

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]
    });
}

Hier einige Dokumentationen: https://developer.chrome.com/extensions/tabs

21
Andrew

Die Browsererweiterung kann dies tun, weil Chrome-Erweiterungen Zugriff auf eine spezielle Chrome-API haben , mit der Sie Folgendes verwenden können:

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

dabei hat createData einen tabid-Wert, der größer ist als der aktuelle Tab (und Sie können den größten Strom tabid mit chrome.windows.getAll() finden). 

In Bezug auf Ihre Seite (oder an einer anderen Stelle, die keine Chrome-Erweiterung ist) ist dies jedoch nicht möglich, da ob ein neues Fenster in einem neuen Tab geöffnet wird oder nicht, wird ausschließlich von den Benutzereinstellungen bestimmt .

3
Patrick Collins

Die beste Methode zum Öffnen mehrerer Registerkarten oder Fenster ist die Verwendung von setTimeout() mit einer Länge von 500 ms.

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

Der folgende Code öffnet mehrere PopUp-Elemente beim Klicken auf die Schaltfläche. 

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

sie müssen sicherstellen, dass die Fensternamen unterschiedlich sind. Andernfalls überschreibt das letzte Popup das vorherige Popup. Als Ergebnis erhalten Sie ein einzelnes Popup.

0
Raihan Ridoy

Der Benutzer muss Popups zulassen, aber am Ende habe ich Folgendes getan:

function openMultipleTabs(urlsArray){

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

}
0
Ale W