Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Послойное срабатывание кликов. (https://javascript.ru/forum/dom-window/52437-poslojjnoe-srabatyvanie-klikov.html)

Mezolick 19.12.2014 07:06

Послойное срабатывание кликов.
 
Здравствуйте, подскажите пожалуйста. имею код на бездействие пользователя.
idleTimer = null;
idleState = false; // состояние отсутствия
idleWait = 2000; // время ожидания в мс. (1/1000 секунды)
 
$(document).ready( function(){
  $(document).bind('mousemove keydown scroll', function(){
    clearTimeout(idleTimer); // отменяем прежний временной отрезок
    if(idleState == true){ 
      // Действия на возвращение пользователя
       $( "div#video" ).css('display', 'none'); 
    }
 
    idleState = false;
    idleTimer = setTimeout(function(){ 
      // Действия на отсутствие пользователя
      $( "div#video" ).css('display', 'block');
      idleState = true; 
    }, idleWait);
  });
 
  $("body").trigger("mousemove"); // сгенерируем ложное событие, для запуска скрипта
});

При клике на любом участке экрана, блок убирается, при отсутствии пользователя блок появляется. Проблема заключается в том, что под этим блоком куча всяких блоков, и при клике на которые срабатывают события onclick(); Как сделать так, что бы при клике на блок "div#video" не происходило кликов по нижнем элеменам?

danik.js 19.12.2014 07:33

Толком не понял че у тебя там происходит. Варианты:
1) Использовать div-подложку. Чтоб все клики приходились на него.
2) Использовать addEventListener('click, fn, true) - т.е. перехватывать событие.

Malleys 19.12.2014 07:39

Необходимо div#video обернуть другим div-элементом, заполняющим всё видимое пространство. (Тогда клик будет приходиться на этот элемент)

Например:
<div style="position: fixed; top: 0; left: 0; right: 0; bottom: 0;width: 100%; height: 100%; z-index: 1000000; ">
 <div id="video"></div>
</div>


У этого div z-index должен быть больше, чем у всех остальных элементов на странице.


Часовой пояс GMT +3, время: 20:07.