1

我正在尝试创建一个书签来打开带有特定文本的链接,但我遇到了该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 事件的链接?

4

1 回答 1

1

您遇到了通常的“lambda 中的循环变量”问题:到超时完成时,i将超过. 您可以将该部分包装在一个(另一个)函数中:document.linksl[i]undefined

(function(item) {
    setTimeout(function() { clickLink(item); }, 1000);
})(l[i]);
于 2012-09-17T14:27:00.730 回答