2013-06-21 135 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中打開它。

相關問題