我有一个使用 Google Maps javascript API 和 Infobox 插件(本机 InfoWindow 的可自定义版本)的应用程序。
它工作得很好,直到我出现以下用例:
如果内容很大,我需要一个带有滚动条的信息框,并且它还需要包含几个带有点击侦听器的 HTML 元素。
为了支持信息框中的点击处理程序,我通常需要做的是设置enableEventPropagation = true,并使用jQuery委托来设置点击处理程序。如果我不允许事件传播,jQuery 委托将不起作用。
这工作得很好,直到我不得不将它与功能滚动条结合起来!我发现滚动条仅在启用事件传播= false 时才起作用,因为如果启用事件传播,则拖动事件只会传递到地图并解释为平移。
有谁知道我可以做些什么来在信息框内容上拥有一个功能滚动条,并能够在某些内容上设置点击处理程序?
对我来说,enableEventPropagation=false 可以解决这两个问题,这听起来合乎逻辑,因为我不明白为什么需要将单击事件传播到地图才能触发我附加到 html 元素的处理程序。
这是我的信息框的设置对象:
{
content: "[my html in here]",
disableAutoPan: false,
pixelOffset: new google.maps.Size(-77, 10),
boxClass: "infoBox",
infoBoxClearance: new google.maps.Size(18, 30),
closeBoxMargin: "14px 6px",
pane: "floatPane",
enableEventPropagation: true
};