gpt4 book ai didi

javascript - (点击事件后)如何在每次打开后延迟打开新选项卡中的链接列表

转载 作者:行者123 更新时间:2023-11-29 19:20:20 25 4
gpt4 key购买 nike

我正在尝试制作一个脚本(用于 Greasemonkey)(在访问特定页面时),
如果你点击我插入页面的链接
(链接“什么都不做”,即我使用 event.preventDefault();)
在新标签页中打开页面中的所有链接,
但在每个标签打开之间有延迟,例如。 500 毫秒。

我有这个代码(基于这个 answer )

var z = ($('table td').find('a'));         // selection via jQuery
$("#mylink").on('click', function(event){
event.preventDefault();
var $this = $(this);
for (i=0; i<z.length; i++) {
window.open(z[i].href, '_blank');
}
});

以上有效,但会同时打开所有链接。


因此,我尝试将 window.open 行包含在以下任一个中:

setInterval(function() {        
window.open(z[i].href, '_blank');
}, 500);

或:

setInterval("window.open('"+z[i].href+"','_blank')", 500);      

但没有帮助:两者什么都没做,当我单击链接时,我只会在浏览器控制台中收到连续的 TypeError: z[i] is undefined 错误。


就其值(value)而言,如果它是一个链接这一事实是导致问题的原因,
我还有用于创建按钮而不是链接的代码:

var z = ($('table td').find('a'));         // selection via jQuery

var button = document.createElement("button");
button.id = 'mybutton';
button.type = "button";
button.value = "im a button";
context.appendChild(button);

$("#mybutton").on('click', function(event){
event.preventDefault();
var $this = $(this);
for (i=0; i<z.length; i++) {
window.open(z[i].href, '_blank');
}
});

以上述两种方式之一更改 window.open 行都无济于事,
我在浏览器控制台中遇到了同样的错误。

最佳答案

首先,您正在使用 jQuery。为什么不充分利用它呢?您可以不使用 for 循环,而只使用 $.each() jQuery 的方法。此外,对于此用例,您应该使用 setTimeout() 而不是 setInterval()。以下对我有用。

var z = ($('table td').find('a'));         // selection via jQuery
$("#mylink").on('click', function(event){
event.preventDefault();
var $this = $(this);

var interval = 0; //set the starting point for the timeout interval

z.each(function() {
var href = $(this).attr('href');

setTimeout(function() {
window.open(href, '_blank');
}, interval);

interval += 1500; //up the interval to ensure a delay between opening

});
});

旁注,我希望用户期待此功能,因为这可能很烦人。此外,大多数现代浏览器都会阻止这些弹出窗口。只是我的两分钱。

关于javascript - (点击事件后)如何在每次打开后延迟打开新选项卡中的链接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33358416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com