Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图API-无法单击信息窗口中的链接_Javascript_Google Maps_Infowindow_Marker - Fatal编程技术网

Javascript 谷歌地图API-无法单击信息窗口中的链接

Javascript 谷歌地图API-无法单击信息窗口中的链接,javascript,google-maps,infowindow,marker,Javascript,Google Maps,Infowindow,Marker,我对谷歌地图API v3中的InfoWindow在Javascript中遇到了一个问题。我已经成功地创建了一个信息窗口,我可以在里面设置任何内容,但我想在里面放一个超文本链接。它工作得很好,我将标签放在setContent()方法上,链接正确地显示在窗口中。不幸的是,它是不可点击的-它有一个正确的链接连接到它,但当我点击它,什么也没有发生。当我用右键点击它并选择“在新窗口中打开”时,它工作得很好。有人能在这里发现问题吗?我有一个简单的代码,如下所示: var bubble; ... some

我对谷歌地图API v3中的InfoWindow在Javascript中遇到了一个问题。我已经成功地创建了一个信息窗口,我可以在里面设置任何内容,但我想在里面放一个超文本链接。它工作得很好,我将标签放在setContent()方法上,链接正确地显示在窗口中。不幸的是,它是不可点击的-它有一个正确的链接连接到它,但当我点击它,什么也没有发生。当我用右键点击它并选择“在新窗口中打开”时,它工作得很好。有人能在这里发现问题吗?我有一个简单的代码,如下所示:

var bubble;

... some lines not related to the bubble ...

bubble = new google.maps.InfoWindow({
  maxSize: new google.maps.Size(500,250)
});

... other not related lines...
然后在创建标记的事件中触发它(适用于标记):

bubble.setContent(“”);
google.maps.event.addListener(标记'click',函数(){
气泡。打开(地图、标记)
});

“地图”和“标记”都很好。

我面临同样的问题。我认为这是因为infowindow内容作为一个div动态插入到DOM中。我不知道为什么会发生这种情况,但我是这样解决的:

  • 使用jQuery(我已经在使用它了-如果您使用替代的js库,可能会有相同的解决方案)
  • 更新html链接以同时定义一个类(比如class=“infowindow\u link”)
  • 添加jQuery处理程序以捕获链接并跟踪它

    $(.infowindow\u link”).live('click',function(){
    window.location.href=this.href;
    });

  • 此“实时”调用跟踪对DOM的更改,并将侦听器附加到您插入的任何新链接。window.location.href更新是跟踪链接的正常行为

    bubble.setContent('<a href="http://www.google.com">LINK</a>');
    
    google.maps.event.addListener(marker, 'click', function() {
       bubble.open(map, marker)
    });