Отличить событие, вызванное пользователем, от программного.
Всем доброго времени суток!
Подскажите, пожалуйста, как можно отличить событие, вызванное пользователем, от программного. Например, у нас есть два селекта - select1, select2. При изменении первого селекта в его обработчике change вызывается событие change второго селекта: $('#select1').change(function(){ $('#select2').change(); }) Как это программное событие $('#select2').change(), отличить от того, что возникает при изменении второго селекта пользователем. Суть задачи в том, что некоторый кусок кода нужно выполнять только если событие было вызвано пользователем. Таких селектов на форме много, желательно универсально решение для всех селектов. Спасибо! |
upvasil,
1. Дополнить наличием события наведения мышью 2. Поместить элементы во фрейм с иного хоста, и там скриптовать по нужному событию, ибо туда залезть можно только пользователем или серверным скриптом. |
Poznakomlus, я минусанул , потому что то что вы написали бред, как ваш код относиться к определинию типа собыия?
И правильный ответ уже дал Deff |
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> |
Poznakomlus,
ладно согласен не прав, как всегда читаю вопрос отрывками) |
В некоторых браузерах реализовано свойство isTrusted объекта-события. Оно равняется true если событие является доверенным, то есть сгенерировано браузером, а не js-кодом.
|
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, время: 07:11. |