延迟javascript DOM样式更改

时间:2012-02-02 08:26:14

标签: javascript dom

这是我的代码:

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

我的问题是mousedown发生在我想要处理的链接上,这个链接是 在bubbleDOM里面。隐藏的呼叫非常快,不会处理链接。

如何延迟bubbleDOM.style.visibility = 'hidden'

5 个答案:

答案 0 :(得分:1)

您可以使用setTimeout来延迟代码

  setTimeout('your_code', time);

例如:

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

否则,

而不是延迟代码,您也可以使用javascript重定向用户

  window.location = "http://www.google.com/";

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

定义processing a link。 “链接未处理”到底是什么意思?链接应该是做某事吗?如果是,那么你需要的延迟取决于链接应该做什么的完成。您可以使用setTimeout设置计时器,但这是一种非常错误的做法。

答案 3 :(得分:0)

使用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);

答案 4 :(得分:0)

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

为什么不使用'click'事件?

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);