Javascript 如何在函数调用之间进行超时?
我的代码运行良好,只是它可以同时打开所有链接。我想延期 这将同时打开所有(多个功能“打开”):Javascript 如何在函数调用之间进行超时?,javascript,function,greasemonkey,settimeout,Javascript,Function,Greasemonkey,Settimeout,我的代码运行良好,只是它可以同时打开所有链接。我想延期 这将同时打开所有(多个功能“打开”): waitForKeyElements ("input.submit[onclick*='Open']", clickOpenBtn); 但是我希望每个函数调用之间有一个延迟(clickOpenBtn) 我的完整代码片段: setTimeout(CheckForZero, 30000); // OR just call CheckForZero() if you don't need to defer
waitForKeyElements ("input.submit[onclick*='Open']", clickOpenBtn);
但是我希望每个函数调用之间有一个延迟(clickOpenBtn
)
我的完整代码片段:
setTimeout(CheckForZero, 30000); // OR just call CheckForZero() if you don't need to defer until processing is complete
function CheckForZero() {
waitForKeyElements ("input.submit[onclick*='Open']", clickOpenBtn);
setTimeout(CheckForZero, 30000);
}
function clickOpenBtn (jNode) {
triggerMouseEvent (jNode[0], "click");
}
function triggerMouseEvent (node, eventType) {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent (eventType, true, true);
node.dispatchEvent (clickEvent);
}
我能做什么?您应该更具体地说明WaitForkEyelments中使用的选择器,类似于所有链接的父节点。这样actionFunction将执行一次,然后您可以执行:
waitForKeyElements ("...", function (p) {
$("input.submit[onclick*='Open']", p).each(clickOpenBtn);
});
function clickOpenBtn (index, jNode) {
setTimeout(function () {
triggerMouseEvent (jNode[0], "click");
}, 1000 * index);
}
在这种情况下,将节点推入FIFO队列,并使用
setInterval
,而不是setTimeout
来处理队列。代码变为:
var nodesToClick=[];//--此数组将保存FIFO队列。
WaitForkEyements(“input.submit[onclick*='Open']”,loadNodeQueue);
函数loadNodeQueue(jNode){
nodesToClick.push(jNode[0]);/--添加到末尾
}
var nodeClkInterval=setInterval(workNodeQueue,30000);
函数workNodeQueue(){
if(nodesToClick.length){
var node=nodesToClick.shift();//--从头开始删除
triggerMouseEvent(节点“单击”);
}
}
函数triggerMouseEvent(节点,事件类型){
var clickEvent=document.createEvent('MouseEvents');
单击event.initEvent(eventType,true,true);
node.dispatchEvent(点击事件);
}
这有3个问题:(1)在填充父节点之前可能会找到它。(2) 在第一批之后将找不到后续输入。(3) 发送到triggerMouseEvent
的类型参数错误。谢谢@BrockAdams。修正了类型参数。其他的“问题”可能是需要的。谢谢。有疑问,但万一是+1。我需要+1你的答案。