移动Safari中的Google Maps v3 InfoBox事件传播

时间:2012-03-15 21:14:25

标签: javascript google-maps javascript-events safari mobile-safari

我使用Google地图实用程序库中的google maps api v3和infoBox创建了一个信息框。信息框有溢出数据。滚动在IE,FF,Chrome和Safari桌面上完全按预期工作。但是,在移动版Safari中,滚动根本不起作用。这几乎就像infoBox没有检测到触摸开始滚动一样。

我已创建此jsfiddle来演示此问题。正如您所看到的(在iOS模拟器或iOS设备上),mouseenter,touchstart,mouseleave和touchend事件正好被触发;它只是向下滚动以查看溢出文本。

整个星期我都在苦苦挣扎。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

我不知道它是否是移动版Safari(很可能),infobox.js或谷歌地图中的错误,但由于某些原因,如果启用了事件传播,滚动将无法在移动版Safari中的信息框内工作信息框。启用事件传播时,滚动将在其他浏览器(FF,Chrome和桌面Safari)中有效。此外,滚动功能在移动设备中运行良好,信息框的事件传播关闭。

所以,我用来解决这个问题的黑客只是确定客户端是否是iOS浏览器,然后相应地设置事件传播。我知道这种做法很糟糕,但这是我能想到的最好的方法。请参阅此fiddle以确认它在移动版Safari和其他浏览器中都有效。此外,请确保您使用的是最新版本的infobox.js(1.1.11)

答案 1 :(得分:0)

// For infobox
var myOptions = {
    enableEventPropagation: true
};
$(document).on("click touchstart", ".clickableclass", function() {
    // your function
});

touchstart为我工作