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

Java 如何防止浏览器响应滚动事件,java,javascript,applet,Java,Javascript,Applet,我有一个显示交互式地图的Java小程序。通过使用滚轮,用户可以放大/缩小地图。不幸的是,web浏览器(Firefox)也会响应滚动事件,小程序最终会从可见页面上滚动出去 我的问题是,当鼠标位于小程序的边界内时,如何防止浏览器响应 到目前为止,我已经尝试修改HTML以使小程序请求成为焦点 applet.focus() 我还尝试向applet的Java代码中添加一条语句,如下所示 requestFocus(); 但两者都没有解决问题 我可以在小程序中添加一个特定的放大/缩小控件,或者可能重新构造

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

我的问题是,当鼠标位于小程序的边界内时,如何防止浏览器响应

到目前为止,我已经尝试修改HTML以使小程序请求成为焦点

applet.focus()
我还尝试向applet的Java代码中添加一条语句,如下所示

requestFocus();
但两者都没有解决问题


我可以在小程序中添加一个特定的放大/缩小控件,或者可能重新构造我的网页,以减少网页滚动的需要,但是如果滚轮仅用于缩放地图,那就太好了。

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

};

使用scroll方法不是很干净,但preventDefault似乎不起作用…

您是否尝试将鼠标侦听器附加到显示地图的容器,然后让容器requestFocus()执行此操作

顺便说一句,任何以“如何防止浏览器..”开头的内容都不是我们的权利(使用用户的浏览器)&无论如何,您都不会尝试使用Java(当然不是沙盒小程序)。您的意思是在单独的窗口中运行小程序吗?小程序与网页上的其他控件交互以过滤地图上显示的内容。一个单独的窗口-小程序查看器用于显示自由浮动的小程序。“小程序与网页上的其他控件交互”感谢您的澄清-这是为数不多的嵌入式小程序有意义的情况之一(它排除了“使用web start启动”选项)。@Andrew-谢谢,我同意您关于不要干扰浏览器行为的评论。但是,我希望小程序捕获所有滚动事件,特别是当鼠标位于其边界内时。我喜欢马修的答案,稍后再试试。我认为JS是唯一一种可以使它在沙盒小程序中工作的方法。这是一个好主意,并被接受,但由于某些原因,我的onscroll函数从未被调用。我在e.preventDefault()上设置了一个断点,但它从未被命中。可能其他一些JS代码正在设置不同的onscroll函数?