Javascript 当鼠标位于信息框内时,禁用在地图上滚动

Javascript 当鼠标位于信息框内时,禁用在地图上滚动,javascript,leaflet,scrollbar,Javascript,Leaflet,Scrollbar,我有一份介绍WMS背景地图的传单,上面有一些特征。当我单击一组功能时,我已经实现了一个可移动的功能信息框,它将进入视图,并基于存储在功能中的数据创建dom。见截图 目前,我无法在此列表中滚动,但使用滚轮时,它后面的地图仍会放大和缩小。我最初的想法是,一个简单的Javascript eventlistener,利用js事件冒泡,可以解决这个问题。下面我展示了DOM结构: X Der blev fundet 790功能 F F s X var mapapp=angular.module(“fea

我有一份介绍WMS背景地图的传单,上面有一些特征。当我单击一组功能时,我已经实现了一个可移动的功能信息框,它将进入视图,并基于存储在功能中的数据创建dom。见截图

目前,我无法在此列表中滚动,但使用滚轮时,它后面的地图仍会放大和缩小。我最初的想法是,一个简单的Javascript eventlistener,利用js事件冒泡,可以解决这个问题。下面我展示了DOM结构:


X
Der blev fundet 790功能
F
F
s
X
var mapapp=angular.module(“featureInfoApp”,[]);mapapp.controller(“featureInfoCtrl”,函数($sce){this.UseHtml=null;this.selectedDeks=0;this.UseHeader=null;this.Features=null;this.SelectedFeature=null;this.step=function(forward){var indeks=this.selectedDeks;if(forward){indeks=indeks+1;}else{indeks=indeks-1;};if(indeks<0)indeks=this.Features.length-1;else if(indeks>(this.Features.length-1))indeks=0;this.selectFeature(this.Features[indeks]);};this.loaddata=function(data){this.Features=data;this.selecteddeks=0;if(data.length==1){this.SelectedFeature(data[0]);}else{this.SelectedFeature data=data[0];this.UseHtml=$sce.UseHtml(数据[0].Html);$map.featureinfo.MarkSelectedFeatureInMap(this.SelectedFeature);};};this.SelectedFeature=function(feature){this.SelectedFeature=feature;this.UseHtml=$sce.trustAsHtml(feature.Html);this.UseHeader=$sce.trustAsHtml(feature.Title);this.selecteddeks=feature;$map.featureinfo.MarkSelectedFeatureInMap(feature);$map.featureinfo.ToggleMasterDetailFeature(true);};});
我尝试了以下方法(部分有效):

$(文档).ready(函数(){
const mapDiv=document.querySelector('#mapDiv');
mapDiv.addEventListener('mouseover',函数(e){
如果(e.target.id=='divMasterView'){
控制台日志(“输入”)
map.scrollWheelZoom.disable();
}
})
mapDiv.addEventListener('mouseout',函数(e){
如果(e.target.id=='divMasterView'){
控制台日志(“离开”)
map.scrollWheelZoom.enable();
}
})
})

这样,当我的鼠标悬停在滚动条顶部时,地图滚动被禁用,我的鼠标滚轮现在激活featureinfo框的滚动功能。在移动设备上,拖动功能在框外工作,无需任何更改。有人知道从哪个角度解决此问题吗?我似乎无法获得任何信息在这方面做得更多,我不知道会发生什么

您可以添加
L.DomEvent.disableClickPropagation(mapDiv);
来禁用此DOM元素下面的映射事件

更新


打开对话框时调用:
L.doEvent.disableScrollPropagation(document.getElementById('divFeatureMasterDetail'))

我对这一功能的实现有点困惑。因为当我现在点击这些功能时,我取消了点击,对话框/div没有出现。当然是这样,因为我现在已经禁用了地图上的点击。那么这是为了什么呢?请尝试:
禁用滚动传播
而不是
禁用点击传播
或者当你有一个事件时,你可以调用
stopPropagation(e)
这是作为一个独立的东西还是与我当前的解决方案一起使用?它本身什么都不做这应该是独立的…当你为我创建一个JSFIDLE时,也许我可以找到它是什么,我会尝试一下