Задержка изменения стиля DOM javascript - PullRequest
0 голосов
/ 02 февраля 2012

это мой код:

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

Моя проблема в том, что mousedown происходит по ссылке, которую я хочу обработать, эта ссылка внутри bubbleDOM. скрытый вызов настолько быстр, что ссылка не обрабатывается.

Как мне задержать bubbleDOM.style.visibility = 'hidden'?

Ответы [ 5 ]

1 голос
/ 02 февраля 2012

вы можете использовать setTimeout для задержки вашего кода

  setTimeout('your_code', time);

например:

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

еще

вместо задержки кода, вы также можете перенаправить пользователя с помощью javascript

  window.location = "http://www.google.com/";
0 голосов
/ 02 февраля 2012

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);
0 голосов
/ 02 февраля 2012

Использовать 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);
0 голосов
/ 02 февраля 2012

Определить processing a link. Что именно вы подразумеваете под «ссылка не обрабатывается»? Ссылка должна что-то делать? Если это так, то задержка, которую вы требуете, зависит от завершения того, что ссылка должна делать. Вы можете установить таймер, используя setTimeout, но это было бы очень неправильно.

0 голосов
/ 02 февраля 2012

Простой ответ: вы можете использовать setTimeout. Ссылка (может не быть элегантным решением)

Если вы ожидаете какого-то события, а затем обрабатываете, вы можете использовать обратный вызов для его достижения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...