2013-06-21 137 views
5

我正在开发一个使用Google Maps API v3的jQuery + Phonegap的移动Web应用程序,并且我在附加到地图上的链接中遇到了一些问题。如何在弹出窗口中打开Goog​​le地图链接?

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

谢谢。

回答

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()函数具体相关。因此,您可以尝试更改这些<a>元素中的href,以使用window.open()而不是简单的URL。

例如,如果您收到了一个参考变量那些<a>元素称为link之一,你可以尝试:

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

这改变了href来自:

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

(实际上全部在一行上,为了可读性而在此格式化):

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

另一种可能性可能是this answer中的技术使用标签上的rel="external"并且MainViewController中的更改。但是这已经过时了,并且需要与DOM元素相似的操作。

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

+0

感谢您的回答。我注意到了这一点,但问题在于,当网页被封装为使用Phonegap的本地应用程序时,所有页面将在同一窗口中打开以模拟真实的本机应用程序。所以我想以弹出式或类似的方式打开它。 – alvarofd

0

试试这个在您的window.location的,你在新标签中打开:

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

尝试使用ChildBrowser插件。您仍然可能需要执行一些JavaScript欺骗操作才能捕获Tap并在ChildBrowser中打开它。

相关问题