我正在使用 jQuery+Phonegap 开发一个使用 Google Maps API v3 的移动网络应用程序,但我在地图上的链接存在一些问题。
我的问题是,是否可以在弹出窗口中打开条款和条件以及 Google 地图链接,而不是在同一个窗口中打开它们,以避免卡在没有像 Apple 那样的物理按钮的设备上。我尝试将“点击”事件附加到地图画布的子元素并更改它们的目标,但我无法实现。有解决办法吗?
谢谢。
我正在使用 jQuery+Phonegap 开发一个使用 Google Maps API v3 的移动网络应用程序,但我在地图上的链接存在一些问题。
我的问题是,是否可以在弹出窗口中打开条款和条件以及 Google 地图链接,而不是在同一个窗口中打开它们,以避免卡在没有像 Apple 那样的物理按钮的设备上。我尝试将“点击”事件附加到地图画布的子元素并更改它们的目标,但我无法实现。有解决办法吗?
谢谢。
这两个链接都有target="_blank"
,所以通常它们应该自动在新窗口中打开。例如,谷歌地图链接如下所示:
<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
看起来他们希望人们使用 PhoneGap 的InAppBrowser,但它似乎专门与该window.open()
功能相关联。因此,您可以尝试更改href
这些<a>
元素中的 以使用window.open()
调用而不是简单的 URL。
例如,如果您<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'
);
另一种可能性可能是这个答案中使用标签rel="external"
的技术和. 但这已被弃用,并且需要对 DOM 元素进行类似数量的摆弄。<a>
MainViewController
另一种想法... 通常,摆弄这些地图和 ToS 链接的内部运作可能会被视为违反服务条款。但是,我认为您在这里很容易争辩说,面对阻止它们正常工作的 PhoneGap 问题,您只是保留了这些链接的原始意图。
解决了!我找到了关于这个答案的解决方案:https ://stackoverflow.com/a/16575541/2507996 。它改变了捕获点击事件的链接行为并使用 PhoneGap/Cordova InAppBrowser 打开新窗口。谢谢大家的回答。
尝试使用ChildBrowser插件。您仍然可能需要做一些 JavaScript 技巧来捕获点击并在 ChildBrowser 中打开它。
在您在新选项卡中打开的 window.location 中尝试此操作:
i.e: <a href="#" onclick="window.open('stackoverflow.com')">New Map(In new window)</a>
试试 PhoneGap 提供的 InAppBrowser。
http://docs.phonegap.com/en/edge/cordova_inappbrowser_inappbrowser.md.html#InAppBrowser