如何防止浏览器响应滚动事件



我有一个显示交互式地图的Java applet。通过使用滚轮,用户可以放大/缩小地图。不幸的是,web浏览器(Firefox)也响应滚动事件,applet最终被滚动出可见页面。

我的问题是,当鼠标在applet的边界内时,如何防止浏览器响应?

到目前为止,我已经尝试修改我的HTML,使applet请求的焦点
applet.focus()

我还尝试在applet的Java代码中添加如下语句

requestFocus();

但两者都没有解决问题。

我可以在applet中添加一个特定的放大/缩小控制,或者可能重组我的网页以减少对网页滚动的需要,但如果滚动轮只完成缩放地图的工作就更好了。

使用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) {}
    }
};

使用滚动方法不是那么干净,但preventDefault似乎不起作用…

您是否尝试将mousellistener连接到显示地图的容器,然后将容器requestFocus()?

最新更新