2013-06-21 14 views
5

Sto sviluppando un'app Web mobile con jQuery + PhoneGap che utilizza l'API di Google Maps v3 e sto riscontrando alcuni problemi con i collegamenti allegati alla mappa.Come si aprono i collegamenti di Google Maps in una finestra pop-up?

La mia domanda è se è possibile aprire i Termini e condizioni e i collegamenti di Google Maps in una finestra pop-up invece di aprirli sulla stessa finestra per evitare di stucking su dispositivi che non hanno pulsanti fisici come quelli Apple. Ho provato ad associare un evento "click" agli elementi figlio dell'area di disegno della mappa e a cambiarne il target, ma non sono stato in grado di raggiungerlo. C'è una soluzione?

Grazie.

risposta

0

risolto! Ho trovato una soluzione su questa risposta: https://stackoverflow.com/a/16575541/2507996. Cambia comportamento del collegamento catturando l'evento click e aprendo nuove finestre con PhoneGap/Cordova InAppBrowser. Grazie a tutti per le vostre risposte.

3

Entrambi questi collegamenti hanno target="_blank" su di essi, quindi normalmente dovrebbero aprirsi automaticamente in una nuova finestra. Per esempio il link di Google Maps è simile al seguente:

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

Ma sembra che PhoneGap è prevalente che il comportamento come lei ha ricordato nel commento. In realtà se si cerca:

phonegap target _blank 

si trova un po 'sul tema, in particolare this discussion e this issue.

Sembra che vogliano che le persone utilizzino PhoneGap InAppBrowser, ma sembra essere legato specificamente alla funzione window.open(). Quindi potresti provare a cambiare il href in questi elementi <a> per utilizzare una chiamata window.open() invece di un semplice URL.

Ad esempio, se hai ottenuto un riferimento a uno di quei <a> elementi in una variabile chiamata link, si potrebbe provare:

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

che cambia il href da:

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

a (in realtà tutto su una riga, formattato qui per la leggibilità):

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

Un'altra possibilità potrebbe essere la tecnica in this answer utilizzando rel="external" nel tag <a> e una modifica in MainViewController. Ma questo è deprecato e richiede una quantità simile di giocherellare con gli elementi DOM.

Un altro pensiero ... Normalmente, giocherellare con il funzionamento interno di queste mappe e collegamenti ToS potrebbe essere considerato una violazione dei termini di servizio. Tuttavia, penso che si possa facilmente sostenere qui che si sta semplicemente preservando l'intento originario di questi collegamenti di fronte a un problema di PhoneGap che impedisce loro di funzionare correttamente.

+0

Grazie per la risposta. L'ho notato, ma il problema è che mentre la pagina web è confezionata come app nativa con PhoneGap, tutte le pagine si aprono nella stessa finestra per simulare una vera app nativa. Quindi voglio aprirlo in un pop-up o qualcosa di simile. – alvarofd

0

Prova questo nel vostro window.location che si apre in una nuova scheda:

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

Prova ad usare il plugin ChildBrowser. Potrebbe ancora essere necessario eseguire alcuni trucchi JavaScript per catturare il tocco e aprirlo in ChildBrowser.

Problemi correlati