Javascript 单击链接并设置超时

Javascript 单击链接并设置超时,javascript,Javascript,在JavaScript中,我尝试在单击链接2秒后执行函数,并等待函数完成执行后再转到链接目标 /* JavaScript */ function myFunction() { /* Block of code, with no 'return false'. */ } <!-- HTML --> <a onclick="setTimeout(myFunction, 2000);" href="http://www.siku-siku.com">Link</a>

在JavaScript中,我尝试在单击链接2秒后执行函数,并等待函数完成执行后再转到链接目标

/* JavaScript */
function myFunction() { /* Block of code, with no 'return false'. */ }

<!-- HTML -->
<a onclick="setTimeout(myFunction, 2000);" href="http://www.siku-siku.com">Link</a>
/*JavaScript*/
函数myFunction(){/*代码块,不带“return false”。*/}
问题是单击后,浏览器立即转到链接目标,即
myFunction
没有时间执行。我错过什么了吗


事先谢谢。

是的,链接的默认行为是浏览器发送的获取请求。想象一下,在注册处理程序之前,浏览器已经注册了另一个处理程序来启动get请求(只是想象中的)。这里就是这样。您应该在内联处理程序中返回false:

   onclick = '(function(){ setTimeout(yourFunction, 2000); return false;})()'
或者更简单一些:

   onclick = 'setTimeout(yourfunction, 2000); return false;'
更新:

使用此选项(它需要jQuery):


您需要从onclick事件中
返回false
,以取消浏览器处理的实际页面加载

由于您希望跟踪链接(函数完成后),因此需要通过javascript进行跟踪。但是您使用的是超时,因此您失去了对clicked元素的引用,因此我们也需要在方法中传递它(如果您希望多个链接使用此逻辑)

html

<a onclick="return createTimedLink(this, myFunction, 2000);" href="http://www.siku-siku.com">Link</a>

演示在

我刚刚试过,浏览器仍然立即转到链接目的地。另外,通过
返回false
,我们实际上不是在告诉浏览器不要跟随链接吗?
<a onclick="setTimeout(myFunction, 2000);" href="#">Link</a>
function myFunction(){
////your other code
///
///
window.location="http://www.siku-siku.com";//at the end

}
<a onclick="return createTimedLink(this, myFunction, 2000);" href="http://www.siku-siku.com">Link</a>
function createTimedLink(element, callback, timeout){
  setTimeout( function(){callback(element);}, timeout);
  return false;
}

function myFunction(element) { 
/* Block of code, with no 'return false'. */
  window.location = element.href;
 }