我正在尝试创建一个书签来打开包含特定文字的链接,但我遇到了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事件?
答案 0 :(得分:1)
你遇到了普通的“lambda中的循环变量”问题:到超时时,i
将超过document.links
的结尾而l[i]
将会是undefined
。您可以将该部分包装在(另一个)函数中:
(function(item) {
setTimeout(function() { clickLink(item); }, 1000);
})(l[i]);