在 Chrome 中一次性打开多个链接作为新标签

IT技术 javascript angularjs google-chrome tabs popup
2021-02-23 18:04:11

我试图在 Google Chrome 中的新标签页中一次打开多个链接,但失败了。

问题:

  1. 被弹窗屏蔽
  2. 在用户允许弹出窗口后在新窗口而不是选项卡中打开

有了这个,我可以在 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="angular.js@1.2.x" 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尝试单独打开链接,但没有用。

6个回答

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

“vanilla JavaScript”不再适用于 chrome(2018 年 1 月),它打开了一个标签,而不是两个..
2021-04-21 18:04:11
截至 2019 年 11 月,tfantina 的代码仅在移动版 Safari(iOS 13.2)上打开一个标签页。不过在 Mac Safari (13.0.3) 上运行良好。
2021-04-28 18:04:11
“vanilla JavaScript”在您的示例中效果很好。但是具有多个 open_win 函数(和相应按钮)的页面不会为每个按钮打开多个选项卡:
2021-05-01 18:04:11
截至 2018 年 7 月,我认为最好的解决方案是这样的: window.open("https://www.ecosia.org", "_new"); window.open("https://www.duckduckgo.com", "secondWindow"); 诀窍是确保第二个窗口具有其他名称,_new否则浏览器将尝试将链接粘贴到覆盖第一个window.open. 我已经在 Chrome 和 IE 中尝试过这个,它对我有用。
2021-05-08 18:04:11
伙计,你的第二个解决方案很棒。
2021-05-14 18:04:11

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

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

其中createData有一个tabid值大于任何当前选项卡(你可以找到当前最大的tabid使用chrome.windows.getAll())。

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

这是对的。浏览器扩展可以做的比网页多得多。尽管两者都使用 javascript,但它们是非常非常不同的东西。
2021-05-07 18:04:11

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

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

用户将不得不允许弹出窗口,但我最终这样做了:

function openMultipleTabs(urlsArray){

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

}
这只会在一个选项卡中为我打开它。
2021-04-20 18:04:11

以下代码将在按钮单击时打开多个弹出窗口。

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

您需要确保每个窗口名称都不同,否则最后一个弹出窗口将覆盖它之前的弹出窗口。因此,您最终会得到一个弹出窗口。