Я писал приложение GWT, которое выполняет различные простые действия с изображениями, такими как панорамирование, масштабирование, повышение яркости и т. Д. При нажатии и перетаскивании мыши. Все работает очень хорошо во всех браузерах, кроме Safari. Ну, Chrome 3 также был проблемой, но мое приложение теперь отлично работает в Chrome 4.
Проблема заключается в захвате событий нажатия средней кнопки мыши. Я добавил обработчики мыши в класс виджетов следующим образом:
public class InteractiveThingy extends Composite implements
HasMouseDownHandlers, HasMouseMoveHandlers, HasMouseUpHandlers,
HasMouseWheelHandlers
{
@Override
public HandlerRegistration addMouseDownHandler(MouseDownHandler handler) {
return addDomHandler(handler, MouseDownEvent.getType());
}
...
}
и я могу подписаться на события мыши в другом месте и обрабатывать их. Я вижу, какая кнопка была нажата, и применяю соответствующую операцию.
Однако в Safari и Chrome 3 обработчики никогда не вызываются, когда я нажимаю среднюю кнопку мыши. Вместо этого появляется значок многопозиционной прокрутки. Средние события нажатия мыши проходят через IE, FireFox и Chrome 4 просто отлично.
Требуется ли какая-то дополнительная обработка событий (например, предварительный просмотр событий), чтобы Safari не мог обрабатывать среднюю мышь, прежде чем мой код получит шанс? Или, возможно, мне нужно подождать, пока Safari исправит проблему, как это сделал Google с Chrome.