Отличить событие, вызванное пользователем, от программного.
Всем доброго времени суток!
Подскажите, пожалуйста, как можно отличить событие, вызванное пользователем, от программного. Например, у нас есть два селекта - 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, время: 14:58. |