2015-07-16 16 views
8

Ich versuche, eine externe URL-Link in meiner App, die eine Cordova App ist zu öffnen. Jetzt präsentiert es einen In-App-Browser mit Modal-Ansicht, aber es hat keine Schaltfläche zurück oder schließen. Der Benutzer bleibt im Wesentlichen hängen, wenn er auf einen externen Link klickt. Wenn zum Beispiel jemand auf diesen Link klickt, der in "Website besuchen" erscheint, erscheint ein In-App-Browser, die Website zeigt sich gut, ABER es gibt keine Möglichkeit, zurück zur App zu navigieren oder den In-App-Browser zu schließen. Wie gehe ich vor, um das zu beheben?Öffnen Sie einen externen Link in Safari (Cordova)

<a href="http://www.sdtaproom.com/" target="_blank">Visit Website</a> 

ich sah, dass es eine Lösung gibt, window.open ("http://stackoverflow.com", "_system") ;, aber ich weiß nicht, wie es in dem href Code zu implementieren.

ANTWORT (Bearbeitet): Fügen Sie diesen Code in das Skript-Tag im Kopf ein.

<script src="cordova.js"></script> 
<script type="text/javascript"> 
window.addEventListener('load', function() { 
    $(document).on('click', 'a[target="_system"],a[target="_blank"]', function (e) { 
    e.preventDefault(); 
    var url = this.href; 
    window.open(url,"_system"); 
    }); 
}, false); 
</script> 
+0

Sie müssen Javascript verwenden, um alle Links auszuwählen, und wählen Sie dann die href und verwenden Sie es in der window.open Funktion – jcesarmobile

+0

können Sie bitte ein Beispiel im Code geben? –

Antwort

11

Sie können JavaScript-Code in das href Attribut einbetten. Dies sollte den Trick:

<a href="javascript: window.open('http://www.sdtaproom.com/', '_system'); return false;">Visit Website</a> 

Sie werden auch die InAppBrowser Plugin installieren (nicht durch seinen Namen täuschen).

+2

Dies funktioniert nicht:/ –

+2

Schade - es funktioniert in einer unserer Apps. Wir haben auch das Plugin [InAppBrowser] (https://cordova.apache.org/docs/en/3.0.0/cordova_inappbrowser_inappbrowser.md.html) installiert. (Lassen Sie sich nicht von seinem Namen täuschen.) Vielleicht möchten Sie überprüfen, ob das einen Unterschied macht. – Glorfindel

+0

Hat nicht funktioniert ... Hmm. Welche Version von Cordova verwendest du? –

1

wie Sie sehen können here: alle Lösung im hybriden Kontext sind nicht anwendbar auf iOS und cordova/phonegap neuere Versionen.

Aus diesem Grund schlage ich vor, eine native Plugin zu verwenden, versuchen Sie dies:

https://github.com/PaoloMessina/OpenUrlExt

diese Verwendung Plugin diesen Code für Android:

navigator.app.loadUrl(<my_url>, {openExternal : true}); 

und eine native Objective-C-Lösung für iOS:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:<my_url>]]; 

Dieses Plugin ist installierbar w ith plugman:

cordova plugin add https://github.com/PaoloMessina/OpenUrlExt 

Und wirklich einfach wie

1

auch bedenken, in der Github README angegeben zu verwenden, wenn Sie von config.xml, die window.open(url, '_system') Lösung unter Verwendung der allow-navigation Richtlinie die verknüpfte Domäne der weißen Liste haben nicht arbeiten. (Sie können jedoch einige Links zur Navigation und einige andere als externen Link verwenden).

In diesem Fall können Sie einen Link-Shortener-Service wie bit.ly verwenden und statt dessen den Link zu dieser URL verwenden.

Verwandte Themen