如何在嵌入式Google地图的KML弹出窗口中覆盖target = _blank?

Her*_*ill 5 jquery google-maps kml

我正在使用KML在Google地图上叠加形状.对应于每个形状的信息包括在<description>元素中,以及指向与该形状对应的细节页面的链接.

例如,我的KML包括:

<description>
    <![CDATA[
    <div>

     ...

        <p>
            <a href="Concession.20.aspx">View details</a>
        </p>
        &nbsp;
    </div>
]]>
Run Code Online (Sandbox Code Playgroud)

当然,我希望该链接在同一个窗口中打开,因为它只是导航到同一站点上的另一个页面.不幸的是,如此处所述,嵌入在<description>KML文件元素中的链接将被重写target='_blank'.

当包含在直接写入KML的HTML中时,目标会被忽略; 打开所有这些链接,就好像目标设置为_blank一样.忽略任何指定的目标.

我的问题:任何人都可以想到一个可以覆盖这个(令人讨厌的,恕我直言)行为并强制在同一窗口中打开这些链接的解决方法吗?

作为一种方法的一个例子,我目前正在尝试覆盖这些链接上的click事件(使用jQuery),但它们是由Google地图动态生成的,我似乎无法及早掌握它们.

小智 6

我无法让这些例子起作用.最后我在jQuery中做了这个,它在点击后立即打开链接.

  $('#map_canvas').delegate('a', 'click', function(event) {
    window.location.href=$(this).attr('href');
    return false;
  });
Run Code Online (Sandbox Code Playgroud)


Her*_*ill 3

我想出了一个使用 jQuery 和地图infowindowopen事件的可行解决方案。这是地图的初始化代码:

    map = new google.maps.Map2(document.getElementById("map"));

    ...

    GEvent.addListener(map, "infowindowopen", function() {
        // Get a reference to the infoWindow
        var infoWindow = $(this.getInfoWindow().getContentContainers());
        // Find all <a> tags in the infoWindow and reset their target attribute
        $("a", infoWindow).attr("target", "_self");
    });
Run Code Online (Sandbox Code Playgroud)