web-dev-qa-db-fra.com

Ouvrir simultanément plusieurs liens dans Chrome en tant que nouveaux onglets

J'essaie d'ouvrir plusieurs liens à la fois dans Google Chrome dans de nouveaux onglets, mais cela échoue.

Problèmes:

  1. Bloqué par popup
  2. Ouvrir dans de nouvelles fenêtres au lieu de l'onglet après que l'utilisateur ait autorisé l'affichage

Avec this , je peux ouvrir plusieurs liens à la fois dans 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>

En outre, je suis tombé sur quelqu'un qui a trouvé une solution de contournement .

J'ai essayé d'utiliser setInterval pour essayer d'ouvrir les liens individuellement, mais cela n'a pas fonctionné.

10
user3522725

Vous pouvez le faire en JavaScript à la vanille:

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

Voici une implémentation plus spécifique à Chrome (si les bloqueurs de popup vous posent des problèmes): 

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

Voici de la documentation: https://developer.chrome.com/extensions/tabs

21
Andrew

L'extension de navigateur peut le faire parce que les extensions Chrome ont accès à une API Chrome spéciale , qui vous permet d'utiliser:

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

createData a une valeur tabid supérieure à tout onglet en cours (et vous pouvez trouver la plus grande tabid actuelle à l'aide de chrome.windows.getAll()). 

Toutefois, pour ce qui est de le faire sur votre page (ou sur toute autre extension que Chrome), cela n’est pas possible, car qu’une nouvelle fenêtre s’ouvre ou non dans un nouvel onglet est entièrement déterminé par les paramètres de l'utilisateur .

3
Patrick Collins

Le code suivant ouvrira plusieurs popUp sur le clic du bouton. 

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

vous devez vous assurer que chaque nom de fenêtre est différent, sinon la dernière popup remplacera la précédente. En conséquence, vous vous retrouverez avec une seule fenêtre contextuelle.

0
Raihan Ridoy