gpt4 book ai didi

javascript - setTimeout 函数

转载 作者:行者123 更新时间:2023-11-28 02:42:31 25 4
gpt4 key购买 nike

我正在尝试创建一个书签来打开包含特定文本的链接,但我遇到了 setTimeout 部分的问题...

javascript:(function(){
function clickLink(link) {
if (document.createEvent) {
var event=document.createEvent("MouseEvents");
event.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
link.dispatchEvent(event);
} else if (link.fireEvent) {
link.fireEvent("onclick");
}
}

l=document.links;
for(var i=0;i<l.length;++i) {
var lL=l[i].innerHTML.toLowerCase();
if(lL.indexOf("click here")!=-1 || lL.indexOf("how")!=-1)
setTimeout(function() {clickLink(l[i]) }, 1000);
}
};
})();

如果我尝试 setTimeout(clickLink(l[i]), 1000);,那么它会起作用,但它会立即运行而不是等待超时!

还想知道一件事,以这种方式单击链接会触发 mousedown/mouseup 事件吗?如果不是,那么我如何以编程方式单击也会触发 mousedown/mouseup 事件的链接?

最佳答案

您遇到了常见的“lambda 中的循环变量”问题:当超时完成时,i 将超出 document.links 的末尾> 和 l[i] 将是未定义。您可以将该部分包装在(另一个)函数中:

(function(item) {
setTimeout(function() { clickLink(item); }, 1000);
})(l[i]);

关于javascript - setTimeout 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12461261/

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