在 Chrome 中同时打开多个链接作为新选项卡

问题描述 投票:0回答:10

我尝试在 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
尝试单独打开链接,但没有成功。

javascript angularjs google-chrome tabs popup
10个回答
44
投票

您可以在普通 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


7
投票

浏览器扩展程序可以做到这一点的原因是因为 Chrome 扩展程序可以访问特殊的 Chrome API,它可以让您使用:

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

其中

createData
tabid
值大于任何当前选项卡(您可以使用
tabid
找到最大当前
chrome.windows.getAll()
)。

但是,就在页面(或非 Chrome 扩展程序的任何地方)上执行此操作而言,这是不可能的,因为 是否在新选项卡中打开新窗口完全取决于用户的设置


3
投票

打开多个选项卡或窗口的最佳方法是使用 500 毫秒的

setTimeout()

window.open("https://facebook.com", "one", windowFeatures);
setTimeout(function(){
  window.open("https://facebook.com", "two", windowFeatures);
}, 500);

3
投票

值得一提的是,您需要“实际上”在浏览器设置中允许弹出窗口。不要依赖浏览器警报来询问您是否允许打开弹出窗口。


1
投票

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



您需要确保每个窗口名称不同,否则最后一个弹出窗口将覆盖之前的弹出窗口。结果,您最终会看到一个弹出窗口。


1
投票

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



0
投票

function openMultipleTabs(urlsArray: string[]) { urlsArray.forEach((url: string, key: number) => { if (key === 0) { window.open(url, `_blank_first_${key.toString()}`); } else { setTimeout(function () { console.log("resolved", key); window.open(url, `_blank_${key.toString()}`); }, 1500 * key); } }); }



0
投票

var str = ` https://google.com https://google.com/mail https://google.com/images `; var linkArray = str.split(/\r?\n/); for (var i = 0; i < linkArray.length; i++) { if (linkArray[i].length > 1) { // will open each link in the current window window.open(linkArray[i], '_blank') } }



-1
投票

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

如果您想查看扩展程序的代码以供参考,您可以在(适用于 Windows)
C:\Documents and Settings\*UserName*\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions

 中找到扩展程序
    


-1
投票

openInfoLinks = () => { const urlsArray = [ `https://...`, `https://...`, `https://...`, ] window.open( urlsArray[this.linkCounter], `_blank_${someIdentifier}_${this.linkCounter}` ); this.linkCounter++; setTimeout(() => { this.linkCounter = 0; }, 500); }

用户可以通过 ctrl+单击按钮 N 次快速连续打开链接。

© www.soinside.com 2019 - 2024. All rights reserved.