如何在弹出窗口中打开Goog​​le地图链接?

时间:2013-06-21 07:21:11

标签: javascript html google-maps google-maps-api-3 cordova

我正在开发一个使用jQuery + Phonegap的移动网络应用程序,该应用程序使用Google Maps API v3,而且我对地图附带的链接存在一些问题。

我的问题是,是否可以在弹出窗口中打开条款和条件以及Google地图链接,而不是在同一窗口中打开它们,以避免卡在没有Apple等物理按钮的设备上。我试图将'click'事件附加到地图画布的子元素并更改它们的目标,但我无法实现它。有解决方案吗?

感谢。

5 个答案:

答案 0 :(得分:3)

这两个链接都有target="_blank",所以通常它们应该在新窗口中自动打开。例如,Google地图链接如下所示:

<a target="_blank"
   href="http://maps.google.com/maps?..."
   title="Click to see this area on Google Maps"
   style="position: static; overflow: visible; float: none; display: inline;"
>
    <div ...>
        <img ...>
    </div>
</a>

但是,就像你在评论中提到的那样,PhoneGap看起来像是覆盖了这种行为。事实上,如果你搜索:

phonegap target _blank

你会发现很多关于这个话题,特别是this discussionthis issue

看起来他们希望人们使用PhoneGap的InAppBrowser,但它似乎与window.open()功能特别相关。因此,您可以尝试更改这些href元素中的<a>,以使用window.open()调用而不是简单的网址。

例如,如果您在名为<a>的变量中引用了其中一个link元素,则可以尝试:

link.href =
    "javascript:window.open( '" +
        link.href +
     "', '_blank', 'location=yes' );";

这会改变href

http://google.com/etc.etc.

to(实际上所有在一行上,为了便于阅读而格式化):

javascript:window.open(
    'http://google.com/etc.etc.',
    '_blank',
    'location=yes'
);

另一种可能性可能是this answer使用rel="external"标记上的<a>MainViewController中的更改的技巧。但是这已被弃用,并且需要与DOM元素相似的数量。

另一个想法......通常,摆弄这些地图和ToS链接的内部工作可能被视为违反服务条款。但是,我认为你可以轻易地在这里争辩说,面对PhoneGap问题,你只是保留了这些链接的原始意图,阻止它们正常工作。

答案 1 :(得分:0)

在您在新标签页中打开的window.location中尝试此操作:

i.e: <a href="#" onclick="window.open('stackoverflow.com')">New Map(In new window)</a>

答案 2 :(得分:0)

尝试使用ChildBrowser插件。你仍然可能需要做一些JavaScript技巧才能捕获tap并在ChildBrowser中打开它。

答案 3 :(得分:0)

答案 4 :(得分:0)

解决了!我找到了这个答案的解决方案:https://stackoverflow.com/a/16575541/2507996。它改变捕获click事件的链接行为并使用PhoneGap / Cordova InAppBrowser打开新窗口。谢谢大家的回答。