2014-06-23 17 views
5

Ich versuche, in neuen Tabs mehr Links auf einmal in Google Chrome zu öffnen, aber es funktioniert nicht.öffnen Sie mehrere Links in Chrome sofort als neuer Tabs

Probleme:

  1. durch Fenster blockiert
  2. öffnen in einem neuen Fenster statt Tab nach dem Benutzer erlaubt, das Popup-

Mit this, kann ich auf einmal mehrere Links öffnen in 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> 

Auch ich stieß auf jemanden, der a workaround gefunden.

Ich versuchte setInterval versuchen über die Links einzeln zu öffnen, aber es hat nicht funktioniert.

+0

Dies scheint ein wenig zweifelhaft, Sie versuchen, Popup-Blöcke zu umgehen, obwohl sie aus diesem bestimmten Grund gemacht wurden, um Popups zu blockieren ...: L –

+0

Ich mache nicht einige fischiges Zeug .. schau dir die Erweiterung an, wie der Entwickler es umgangen hat? hmm – user3522457

+0

Wollen Sie tun, dass [unabhängig von Browser-Einstellungen] (http://stackoverflow.com/questions/4907843/open-a-url-in-a-new-tab-using-javascript)? Ich denke nicht, dass das möglich ist. –

Antwort

14

finden Sie können dies tun, in Vanille 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> 

Hier ist eine Chrome-spezifische Implementierung (wenn Popup-Blocker Sie Schwierigkeiten geben):

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 ist eine Dokumentation: https://developer.chrome.com/extensions/tabs

+0

"Vanilla JavaScript" funktioniert in Ihrem Beispiel gut. aber eine Seite mit mehreren open_win-Funktionen (und entsprechenden Schaltflächen) öffnet nicht mehrere Registerkarten für jede Schaltfläche: – Arthur

+1

das "Vanille-JavaScript" funktioniert nicht mehr in Chrome (Januar 2018), es öffnet nur eine Registerkarte, nicht zwei. – Kaddath

3

Der Grund, dass die Browser-Erweiterung kann es tun, weil Chrome-Erweiterungen have access to a special Chrome API, in dem Sie verwenden:

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

wo createData einen tabid Wert größer ist als jede aktuelle Registerkarte hat (und Sie können den größten Strom finden tabid mit chrome.windows.getAll()).

In Bezug auf das Ausführen auf Ihrer Seite (oder an einer anderen Stelle, die keine Chrome-Erweiterung ist) ist dies jedoch nicht möglich, da whether or not a new window opens in a new tab is determined entirely by the user's settings.

+1

Das ist richtig. Browsererweiterungen können viel mehr als eine Webseite. Obwohl beide Javascript verwenden, sind sie sehr, sehr unterschiedliche Dinge. – Maverick

-1

Sieht aus wie Erweiterung unten Code verwendet diese Registerkarten zu öffnen.

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

} 

Wenn Sie als Referenz auf den Code der Erweiterung um einen Blick nehmen Sie die Erweiterungen in (für Windows) C:\Documents and Settings\*UserName*\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions

+0

Während es interessant sein kann, den Code einer Browsererweiterung zu sehen, funktioniert dieser Code NICHT auf einer Website. – Maverick

+0

'chrome.tabs.create' ist Teil des Chrome-API, die ich in meiner Antwort diskutiert - es ist nicht auf einer Webseite zur Arbeit zu gehen. –

+0

Ich weiß, dass es auf einer Webseite nicht funktioniert, da es chrome api verwendet. Das war für das Beantworten seiner Frage darüber, wie Erweiterungsentwickler es erreichten. – nyzm

Verwandte Themen