Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Отличить событие, вызванное пользователем, от программного. (https://javascript.ru/forum/events/42313-otlichit-sobytie-vyzvannoe-polzovatelem-ot-programmnogo.html)

upvasil 21.10.2013 21:25

Отличить событие, вызванное пользователем, от программного.
 
Всем доброго времени суток!

Подскажите, пожалуйста, как можно отличить событие, вызванное пользователем, от программного.
Например, у нас есть два селекта - select1, select2.
При изменении первого селекта в его обработчике change вызывается событие change второго селекта:
$('#select1').change(function(){
     $('#select2').change();
})

Как это программное событие $('#select2').change(), отличить от того, что возникает при изменении второго селекта пользователем.
Суть задачи в том, что некоторый кусок кода нужно выполнять только если событие было вызвано пользователем. Таких селектов на форме много, желательно универсально решение для всех селектов.

Спасибо!

Deff 21.10.2013 22:20

upvasil,
1. Дополнить наличием события наведения мышью
2. Поместить элементы во фрейм с иного хоста, и там скриптовать по нужному событию, ибо туда залезть можно только пользователем или серверным скриптом.

cyber 22.10.2013 11:47

Poznakomlus, я минусанул , потому что то что вы написали бред, как ваш код относиться к определинию типа собыия?
И правильный ответ уже дал Deff

cyber 22.10.2013 12:51

Poznakomlus, ну ну.
и так есть код
<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>

    <div id='click'> 123</div>
    
    
    <script>


      var div = document.getElementById('click');
      
      
      div.onclick = function () {
      
       alert(1)
       
      };

      // а теперь вопрос как отличить клик пользователя от вызова click, если метод выполняеться в другом скрипте к которому нет доступа??? 
      
      div.click();
      

    </script>

  </body>
</html>

cyber 22.10.2013 13:28

Poznakomlus,
ладно согласен не прав, как всегда читаю вопрос отрывками)

danik.js 22.10.2013 18:45

В некоторых браузерах реализовано свойство isTrusted объекта-события. Оно равняется true если событие является доверенным, то есть сгенерировано браузером, а не js-кодом.

cyber 22.10.2013 21:30

danik.js, если извращаться то может лучше так??)
<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>

    <div id='click'> 123</div>
    
    
    <script>
      
     var cl =  HTMLElement.prototype.click;
      
      HTMLElement.prototype.click = function () {
      
        console.log('It programm click');
        
        cl.apply(this, arguments);
      
      }
     


      var div = document.getElementById('click');
      
      div.onclick = function () {
      
        // alert(1)
        
        console.log('clicked')
        
      };

      
      div.click();
      

    </script>

  </body>
</html>


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