javascript - 使用 JavaScript 一次打开 25 个以上的选项卡

标签 javascript google-chrome tabs load

我正在使用 javascript 打开网站上图像的所有链接。但该脚本在打开大约 25 个选项卡后停止,这可能是由 Chrome 引起的。我尝试过 Firefox,但它死机了(所以我什至不敢在 IE 中尝试)。我尝试让脚本在每个选项卡之间等待 500 毫秒,但这除了使脚本变慢之外没有任何改变。

关于如何解决这个问题有什么建议吗?是否有某种方法可以仅在前一个选项卡完全加载时打开下一个选项卡?

function in_array(needle, haystack) {
    var key = '';
    for (key in haystack) {
        if (haystack[key] == needle) {
            return true
        }
    }
    return false
}
function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}
var allLinks = document.links;
var allHrefs = [];
var openedWindows = [];
var x = 0;
var y = 0;
for (var i = 0; i < allLinks.length; i++) {
    if (allLinks[i].href.match(/\.(jpg|png|jpeg|gif|bmp)$/i)) {
        allHrefs[x] = allLinks[i].href;
        x++
    }
}
for (var i = 0; i < allHrefs.length; i++) {
    if (!in_array(allHrefs[i], openedWindows)) {
        openedWindows[y] = allHrefs[i];
        y++;
        sleep(500);
        window.open(allHrefs[i])
    }
}

最佳答案

由于它看起来像是明显的脚本破坏者,因此请将您的 sleep() 函数替换为 setIntervalsetTimeout 您的链接打开函数。您可以将最后一个循环更改为这样的内容

    for (var i = 0; i < allHrefs.length; i++) {
        if (!in_array(allHrefs[i], openedWindows)) {
            openedWindows[y] = allHrefs[i];
            y++;
            setTimeout(window.open(allHrefs[i]), 500);
        }
    }

关于javascript - 使用 JavaScript 一次打开 25 个以上的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5223463/

相关文章:

javascript - 当我的按钮放置在angularjs中的不同 Controller 中时如何在按钮单击时调用 Controller 功能

javascript - mootools 比 jquery 有什么优势?

JavaScript forEach() 方法在 Chrome 和 Firefox 中的工作方式不同

css - 适用于 Chrome 但不适用于 Safari 的 Ionicons

Javascript - Highchart - 数据点和标志的工具提示位置

javascript - 如何修复 webpack 的快速警告?

macos - Chrome headless 总是在 osx 上显示其停靠栏图标

java - firefox 像 Jtabbedpane 中的标签排列

java - smartGwt 关闭 clickHandler

android - OnClickListener 不响应 fragment 中的点击