Как запретить браузеру реагировать на события прокрутки - PullRequest
2 голосов
/ 19 августа 2011

У меня есть Java-апплет, который отображает интерактивную карту. Используя колесо прокрутки, пользователь может увеличивать / уменьшать масштаб карты. К сожалению, веб-браузер (Firefox) также реагирует на события прокрутки, и апплет заканчивается прокруткой с видимой страницы.

Мой вопрос: как я могу запретить браузеру реагировать, когда мышь находится в границах апплета?

До сих пор я пытался изменить мой HTML, чтобы фокус запроса апплета был

applet.focus()

Я также попытался добавить оператор в код Java моего апплета, как этот

requestFocus();

Но ни одна из них не решила проблему.

Я мог бы добавить конкретный элемент управления увеличением / уменьшением в апплете или, возможно, реструктурировать мою веб-страницу, чтобы уменьшить необходимость прокрутки веб-страницы, но было бы неплохо, если бы колесо прокрутки выполняло задачу масштабирования карты только.

Ответы [ 2 ]

4 голосов
/ 19 августа 2011

Используйте javascript и сделайте что-то вроде этого:

var applet = document.getElementById("appletID");
applet.mouseover = function(e) {
    document.body.onscroll = function(e) {
         e.preventDefault();
    }
}

applet.mouseout = function(e) {
    //replace with empty function
    document.body.onscroll = function(e) { }
}

Не это не проверенный код.может быть пара опечаток

РЕДАКТИРОВАТЬ, как я уже говорил опечатки ... Я проверил это, и это работает точно:

window.onload = function() {

var applet = document.getElementById("header");
    applet.onmouseover = function(e) {
         window.onscroll = function(e) {
         //scroll where you want to be (the top)
           scroll(0,0) ;
         }
     }

    applet.onmouseout = function(e) {
          //replace with empty function
          window.onscroll = function(e) {}
    }

};

Использование метода прокрутки не так чисто, но не предотвращениепохоже на работу ...

0 голосов
/ 19 августа 2011

Вы пытались присоединить MouseListener к контейнеру, который отображает карту, и затем ваш контейнер requestFocus ()?

...