Распространение событийБывают моменты, когда необходимо переопределить обработку некоторых событий DOM, встроенную в броузер, и с помощью функции dojo.connect подставить свои функции, которые будут обрабатывать эти события. В качестве двух наиболее типичных примеров можно привести необходимость предотвратить автоматический переход броузера после щелчка на гиперссылке и необходимость предотвратить автоматическую отправку формы по нажатию на клавишу Enter или в результате щелчка на кнопке Submit.К счастью, помешать броузеру выполнить действие по умолчанию, заданное для этих событий DOM, очень просто – достаточно лишь вызвать функцию dojo.stopEvent или метод preventDefault объекта DOM-Event, и событие прекратит свое распространение по броузеру. Функция stopEvent принимает в качестве параметра объект DOMEvent: dojo.stopEvent(/*DOMEvent*/evt) Следующий пример демонстрирует применение функции stopEvent: var foo = dojo.byId("foo"); //некоторый якорный элемент dojo.connect(foo, "onclick", function(evt) { console.log("anchor clicked"); dojo.stopEvent(evt); //предотвратит переход по ссылке и дальнейшее //всплытие события }); Точно так же просто отменяется автоматическая отправка формы, для этого достаточно передать контекст соединения и связать его с событием submit. var bar = dojo.byId("bar"); //some form element dojo.connect(bar, "onsubmit", function(evt) { console.log("form submitted"); evt.preventDefault();//предотвратит отправку формы, но не запретит //дальнейшее всплытие события }); Статьи из раздела Dojo на эту тему: ![]() ![]() ![]() ![]() Вернуться в раздел: Dojo / Обработчики событий и организация взаимодействий по подписке
|