Google Wave: как они сделали кликабели
-
29-09-2019 - |
Вопрос
Поскольку мы сталкиваемся с проблемами производительности GWT в мобильном приложении, я заглянул в волновой код Google, поскольку он разработан с GWT.
Я думал, что все кнопки есть виджеты, но если вы посмотрите на сгенерированный HTML с Firebug, вы не видите атрибут OnClick, установленным на кликабельных Div. Интересно, как они достигают этого, имея элемент, который выпускает события, которые выпускают или Mousedown или, похоже, не являются виджетом, ни введенным с атрибутом OnClick.
Возможность создания таких компонентов, наверняка возьмет у меня еще один шаг к оптимизации производительности.
Спасибо. PS: Google тоже не собирался открыть код клиента. Не смог найти это.
Решение
То GWT Документация Показывает, как создавать обработчики в приложении GWT Java:
public void anonClickHandlerExample() {
Button b = new Button("Click Me");
b.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
// handle the click event
}
});
}
Это будет генерировать HTML-элемент и связывает обработчик щелчка к нему. Однако на практике это имеет тот же результат, что и использование document.getElementById('element').onclick()
на существующем элементе на вашей странице.
Другие советы
Вам не нужно ставить onclick
Атрибут на HTML, чтобы у него был обработчик OnClick. Это очень простой пример:
<div id="mydiv">Regular old div</div>
Затем в скрипте:
document.getElementById('mydiv').onclick = function() {
alert('hello!');
}
Они не будут напрямую установить свойство OnClick, он был бы установлен в коде GWT или через другую библиотеку JavaScript.
Вы можете подключить функции к onclick
событие с использованием JavaScript. Вот пример, используя jquery:
$(document).ready(function(){
$("#div-id").click(function(){
/* Do something */
});
});
Если вы заинтересованы в оптимизации производительности вокруг этого, вам может потребоваться расследование делегирования событий в зависимости от вашей ситуации.
Событие Click генерируется для каждого элемента DOM в корпусе. Событие перемещается от тела до щелкновения элемента (если вы не используете Internet Explorer), попадает в щелчок элемента, а затем пузыри обратно. Событие может быть захвачено либо через атрибуты DOM-элемента, обработчики событий в JavaScript или атрибуты на любом из родительских уровней (пузырька или захватывающее событие триггеры это).
Я думаю, что они только что установили его в файле .js. Легко проводится с помощью JQuery с $ (документ). Например, ().