立即在Chrome中打开多个链接作为新标签

use*_*725 13 javascript tabs google-chrome popup angularjs

我正试图在新版标签中一次在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>
Run Code Online (Sandbox Code Playgroud)

此外,我遇到了一个找到解决方法的人.

我尝试使用setInterval尝试单独打开链接但它不起作用.

And*_*rew 27

你可以用vanilla 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>
Run Code Online (Sandbox Code Playgroud)

这是一个更具特定于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]
    });
}
Run Code Online (Sandbox Code Playgroud)

以下是一些文档:https://developer.chrome.com/extensions/tabs

  • "香草JavaScript"不再使用chrome(2018年1月),它打开一个标签,而不是两个.. (7认同)
  • 截至 2018 年 7 月,我认为最好的解决方案是这样的:`window.open("https://www.ecosia.org", "_new"); window.open("https://www.duckduckgo.com", "secondWindow");` 诀窍是确保第二个窗口的名称不是`_new`,否则浏览器会尝试将链接粘贴到覆盖第一个 `window.open` 的相同窗口。我已经在 Chrome 和 IE 中尝试过这个,它对我有用。 (2认同)
  • 截至 2019 年 11 月,tfantina 的代码仅在移动 Safari (iOS 13.2) 上打开一个选项卡。但在 Mac Safari (13.0.3) 上运行良好。 (2认同)

Pat*_*ins 6

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

chrome.windows.create({tabid: n})
Run Code Online (Sandbox Code Playgroud)

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

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

  • 这是对的。浏览器扩展可以做的比网页多得多。尽管两者都使用 javascript,但它们是非常非常不同的东西。 (2认同)