我正在使用 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()
函数替换为 setInterval
或 setTimeout
您的链接打开函数。您可以将最后一个循环更改为这样的内容
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/