我正在开发一个使用Google Maps API v3的jQuery + Phonegap的移动Web应用程序,并且我在附加到地图上的链接中遇到了一些问题。如何在弹出窗口中打开Google地图链接?
我的问题是,如果可以在弹出窗口中打开条款和条件以及Google地图链接,而不是在同一个窗口中打开它们,以避免在没有Apple按钮等设备的设备上出现问题。我试图在地图画布的子元素上添加一个'click'事件并更改它们的目标,但是我一直无法实现。有解决方案吗?
谢谢。
我正在开发一个使用Google Maps API v3的jQuery + Phonegap的移动Web应用程序,并且我在附加到地图上的链接中遇到了一些问题。如何在弹出窗口中打开Google地图链接?
我的问题是,如果可以在弹出窗口中打开条款和条件以及Google地图链接,而不是在同一个窗口中打开它们,以避免在没有Apple按钮等设备的设备上出现问题。我试图在地图画布的子元素上添加一个'click'事件并更改它们的目标,但是我一直无法实现。有解决方案吗?
谢谢。
已解决!我在这个答案中找到了一个解决方案:https://stackoverflow.com/a/16575541/2507996。它改变了捕获点击事件的链接行为并使用PhoneGap/Cordova InAppBrowser打开新窗口。谢谢你的回答。
这两个链接都有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 discussion和this 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问题时保留这些链接的原意,以防止它们正常工作。
试试这个在您的window.location的,你在新标签中打开:
i.e: <a href="#" onclick="window.open('stackoverflow.com')">New Map(In new window)</a>
尝试使用ChildBrowser插件。您仍然可能需要执行一些JavaScript欺骗操作才能捕获Tap并在ChildBrowser中打开它。
Try InAppBrowswer由PhoneGap提供。
http://docs.phonegap.com/en/edge/cordova_inappbrowser_inappbrowser.md.html#InAppBrowser
感谢您的回答。我注意到了这一点,但问题在于,当网页被封装为使用Phonegap的本地应用程序时,所有页面将在同一窗口中打开以模拟真实的本机应用程序。所以我想以弹出式或类似的方式打开它。 – alvarofd