延迟javascript DOM样式的更改
这是我的代码:延迟javascript DOM样式的更改,javascript,dom,Javascript,Dom,这是我的代码: document.addEventListener('mousedown', function (e) { bubbleDOM.style.visibility = 'hidden'; }, false); 我的问题是mousedown发生在我想要处理的链接上,这个链接是 在泡泡区里面。隐藏调用非常快,因此链接未被处理 如何延迟bubbleDOM.style.visibility='hidden'?简单的答案是可以使用setTimeout。(可能不是一个优雅的解决方案) 如
document.addEventListener('mousedown', function (e) {
bubbleDOM.style.visibility = 'hidden';
}, false);
我的问题是mousedown发生在我想要处理的链接上,这个链接是
在泡泡区里面。隐藏调用非常快,因此链接未被处理
如何延迟
bubbleDOM.style.visibility='hidden'
?简单的答案是可以使用setTimeout。(可能不是一个优雅的解决方案)
如果您正在等待某个事件发生,然后进行处理,则可以使用回调来实现它。定义
处理链接。你所说的“链接未处理”到底是什么意思?链接应该在做什么吗?如果是的话,那么你需要的延迟取决于链接应该做什么的完成情况。您可以使用setTimeout设置计时器,但这是一种非常错误的做法。您可以使用setTimeout延迟代码
setTimeout('your_code', time);
e、 g:
否则,
您还可以使用javascript重定向用户,而不是延迟代码
window.location = "http://www.google.com/";
使用setTimeout
document.addEventListener('mousedown', function (e) {
setTimeout(function() {
bubbleDOM.style.visibility = 'hidden';
}, 3000); // for 3 seconds
}, false);
也可以使用setInterval进行循环检查
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);
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);
proccess意味着访问该网站(又名“a href”),是的,在这里使用设置时间是不好的做法,那么我该怎么办?当用户单击bubbleCom时,您可以从javascript本身重定向用户,使用window.location将用户发送到该链接。请参阅我的答案。在要处理的链接的onclick事件中处理该链接,而不是父元素。这是由于在各种浏览器中实现的可能冲突的事件顺序机制造成的:setTimeout(“bubbleDOM.style.visibility=‘hidden’;”,100);工作了谢谢
document.addEventListener('mousedown', function (e) {
bubbleDOM.style.visibility = 'hidden';
window.location = e.target.href;
}, false);