我有一个显示交互式地图的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()?