如何在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>