从今天早些时候版本49升级到Chrome 50.0.2661.87米后,我的谷歌地图页面上的img元素没有触发他们的onclick事件。这些img通过JavaScript使用google maps api controls数组动态地添加到页面中。我已经能够在一个简单的谷歌地图实现here显示的问题重现。在IE和Firefox中,此页面上的聊天按钮会触发并显示警报。但在Chrome 50中,它有时只会触发。我可以在同事的计算机上重现问题。它似乎在你第一次打开页面时工作,但如果你重新加载它不起作用。当你点击“实时聊天”按钮时,它应该显示一个提醒。另外,如果我使用相同的技术将地图上的span和div元素作为兄弟元素放置在img元素上,那么它们的onclick事件会触发很好。Onclick事件不会在谷歌地图API中触发img元素
下面是上面引用页面的代码。
<!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#map {
height: 100%;
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=visualization,geometry"></script>
<script type="text/javascript">
function initialize()
{
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8
});
var container = document.createElement('div');
var img = document.createElement('img');
img.src = "http://diamondmaps.com/img/btnchat.png";
img.onclick = function()
{
alert('click');
};
container.style.padding = '5px';
container.appendChild(img);
map.controls[google.maps.ControlPosition.TOP_LEFT].push(container);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map"></div>
</body>
</html>
从Ad.Infinitum的答案提示我一直在尝试不同的时间和顺序的事件。我能够获得一个临时解决方案,在该解决方案中,我不会订阅onclick事件,直到图像加载完成。这是丑陋的,我不明白为什么它会起作用,但是自从做出这种改变以来,我一直无法使它失败。 – benHill