2013-06-21 18 views
5

Zajmuję się tworzeniem mobilnej aplikacji internetowej z jQuery + Phonegap, która używa Google Maps API v3 i mam pewne problemy z linkami dołączonymi do mapy.Jak otworzyć linki do Map Google w wyskakującym okienku?

Moje pytanie brzmi, czy można otworzyć Warunki korzystania z usługi i linki do Map Google w wyskakującym okienku, zamiast otwierać je w tym samym oknie, aby uniknąć zablokowania urządzeń, które nie mają fizycznych przycisków, takich jak Apple. Próbowałem dołączyć wydarzenie "kliknięcia" do elementów podrzędnych płótna mapy i zmienić ich cel, ale nie udało mi się tego osiągnąć. Czy istnieje rozwiązanie?

Dzięki.

Odpowiedz

3

Oba te linki mają na sobie target="_blank", więc normalnie powinny one automatycznie otwierać się w nowym oknie. Na przykład związek Google Maps wygląda następująco:

<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> 

Ale wygląda PhoneGap jest przesłanianie to zachowanie jak wspomniano w komentarzu. W rzeczywistości, jeśli szukać:

phonegap target _blank 

znajdziesz sporo na ten temat, w szczególności this discussion i this issue.

Wygląda na to, że chcą oni używać telefonu PhoneGap o numerze InAppBrowser, ale wydaje się, że jest on powiązany z funkcją window.open(). Więc możesz spróbować zmienić href w tych elementach <a>, aby użyć połączenia window.open() zamiast prostego adresu URL.

Na przykład, jeśli dotarłeś odniesienie do jednego z tych <a> elementów w zmiennej o nazwie link, możesz spróbować:

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

który zmienia href od:

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

do (w rzeczywistości wszystko w jednym wierszu, sformatowany tutaj w celu uzyskania czytelności):

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

Inną możliwością może być technika w this answer z użyciem rel="external" w znaczniku <a> i zmiana w MainViewController. Jest to jednak przestarzałe i wymaga podobnej ilości manipulowania elementami DOM.

Jeszcze jedna myśl ... Normalnie, błąkanie się z wewnętrznymi działaniami tych map i linków ToS może być uważane za naruszenie warunków korzystania z usługi. Myślę jednak, że z łatwością można argumentować, że po prostu zachowujesz pierwotną intencję tych linków w obliczu problemu PhoneGap, który uniemożliwia im prawidłowe działanie.

+0

Dzięki za odpowiedź. Zauważyłem to, ale chodzi o to, że strona internetowa jest spakowana jako aplikacja natywna za pomocą Phonegapa, wszystkie strony otwierają się w tym samym oknie, aby symulować prawdziwą natywną aplikację. Więc chcę otworzyć go w wyskakującym okienku lub tym podobnym. – alvarofd

0

Spróbuj tego w window.location, które otwierają się w nowej karcie:

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

Spróbuj użyć wtyczki ChildBrowser. Być może będziesz musiał wykonać sztuczkę JavaScript, aby przechwycić i otworzyć w ChildBrowser.

Powiązane problemy