2012-02-02 54 views
0

这是我的代码:延迟一个javascript DOM风格变化

document.addEventListener('mousedown', function (e) { 
    bubbleDOM.style.visibility = 'hidden'; 
}, false); 

我的问题是,我想处理环节上发生鼠标按下,这个环节是 内bubbleDOM。隐藏的通话非常快,链接不被处理。

我该如何推迟bubbleDOM.style.visibility = 'hidden'

回答

1

可以使用的setTimeout耽误您的代码

setTimeout('your_code', time); 

如:

setTimeout('bubbleDOM.style.visibility = 'hidden';', 1000); 

否则,

,而不是延迟代码,也可以使用JavaScript

将用户重定向
window.location = "http://www.google.com/"; 
+0

setTimeout(“bubbleDOM.style.visibility ='hidden';”,100);谢谢 – Tom 2012-02-02 08:40:36

0

简单的答案是你可以使用setTimeout。 Reference(可能不是一个优雅的解决方案)

如果您正在等待某个事件发生,然后进行处理,则可以使用回调来实现它。

0

定义processing a link。 '你的链接没有被处理'是什么意思?该链接是否应该做些什么?如果是,那么你需要的延迟取决于链接应该完成的任何事情。你可以使用setTimeout来设置一个计时器,但这将是一个非常错误的做法。

+0

proccess意味着我们要到该网站又名“A HREF”是的这是不好的做法,使用设定的时间这里,所以我该怎么办? – Tom 2012-02-02 08:35:50

+0

当用户点击bubbleCom时,你可以从javascript本身重定向用户,使用window.location将用户发送到该链接。参见我的答案。 – Neelam 2012-02-02 08:37:43

+0

在要处理的链接的onclick事件中链接的过程,而不是父元素。这是由于在各种浏览器中实现的可能相冲突的事件顺序机制:http://www.quirksmode.org/js/events_order.html – 2012-02-02 08:51:18

0

使用的setTimeout

document.addEventListener('mousedown', function (e) { 
    setTimeout(function() { 
    bubbleDOM.style.visibility = 'hidden'; 
    }, 3000); // for 3 seconds 
}, false); 

或者你可以使用setInterval的for循环检查

document.addEventListener('mousedown', function (e) { 
    var checkingInterval = setInterval(function() { 
    // any ways to check if the bubbleDom is loaded? 
    if (bubbleDOM != null) { 
     bubbleDOM.style.visibility = 'hidden'; 
     // stop checking 
     clearInterval(checkingInterval); 
    } 
    }, 3000); // for 3 seconds 
}, false); 
0

的setTimeout能延缓隐藏的逻辑,但它可能无法正常工作,每次,因为它依赖于浏览器的速度,短延迟时间可能不会触发链接点击

为什么不使用'点击'事件?

document.addEventListener('click', function (e) { 
    bubbleDOM.style.visibility = 'hidden'; 
}, false); 

或者你可以做监听功能跳:

document.addEventListener('mousedown', function (e) { 
    bubbleDOM.style.visibility = 'hidden'; 
    window.location = e.target.href; 
}, false);