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

时间:2011-08-19 08:43:00

标签: java javascript applet

我有一个显示交互式地图的Java小程序。通过使用滚轮,用户可以放大/缩小地图。遗憾的是,Web浏览器(Firefox)也响应滚动事件,并且小程序最终会从可见页面滚动。

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

到目前为止,我已尝试修改HTML以使applet请求重点

applet.focus()

我还尝试在我的applet的Java代码中添加一个语句,如下所示

requestFocus();

但两者都没有解决问题。

我可以在applet中添加特定的放大/缩小控件,或者可能重构我的网页以减少网页滚动的需要,但如果滚轮完成缩放地图的工作会很好仅

2 个答案:

答案 0 :(得分:4)

使用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似乎不起作用......

答案 1 :(得分:0)

您是否尝试将MouseListener附加到显示地图的容器,然后让容器requestFocus()?