如何在javascript中延迟元素的onclick响应
可能重复:如何在javascript中延迟元素的onclick响应,javascript,browser,popup,window.open,Javascript,Browser,Popup,Window.open,可能重复: 我可以延迟元素的onclick操作吗。我有一个在onclick事件中调用函数的元素。如何延迟对该函数的调用?我想告诉浏览器在执行onclick操作之前停止两秒钟 元素看起来像这样 <div id="id01" class="channel" onclick="load_window('http://www.ewtn.com')"><a>EWTN.com</a></div><br/>EWTN television netwo
我可以延迟元素的onclick操作吗。我有一个在onclick事件中调用函数的元素。如何延迟对该函数的调用?我想告诉浏览器在执行onclick操作之前停止两秒钟 元素看起来像这样
<div id="id01" class="channel" onclick="load_window('http://www.ewtn.com')"><a>EWTN.com</a></div><br/>EWTN television network</div>
我希望延迟对load_window()的调用,同时仍让浏览器将该操作视为用户操作。否,如果不将浏览器挂起一段时间,就无法延迟当前运行的javascript线程的执行 您可以在一个紧密的循环中循环,直到2秒过去,然后执行弹出操作,但这将是一个可怕的用户体验,一些浏览器甚至可能因为脚本没有响应而中止脚本。我根本不建议这样做。这是一个糟糕的设计 稍后执行某些代码通常是通过
setTimeout()
完成的,但您已经说过,出于弹出原因,不想使用它
如果您想解释您真正想要解决的问题,也许我们可以提供一些其他方法来解决这个问题。快速而肮脏的方法是创建一个新函数,为
load\u窗口
调用包装一个超时,并将该新函数设置为onclick
值
function channel_click(){
// anon wrapper function, 2 second delay
setTimeout( function () {
load_window('http://www.ewtn.com');
} , 2000 );
}
然后
EWTN.com
EWTN电视网
不知道你的load\u窗口
函数实际上在做什么,所以我不能说在2秒钟结束后会发生什么
同样,这是您提供的示例所特有的。如果您需要更通用的方法,您必须提供更多信息
function channel_click(){
// anon wrapper function, 2 second delay
setTimeout( function () {
load_window('http://www.ewtn.com');
} , 2000 );
}
<div id="id01" class="channel" onclick="channel_click()"><a>EWTN.com</a></div><br/>EWTN television network</div>