Phonegap 2.9.0 nicht öffnet externe links in einem Standard-browser
Was ich versuche zu tun, ist super einfach, öffnen Sie einen link über den browser des Geräts, aber es zeigt sich schwieriger als ich gedacht hatte.
Ich das Projekt erstellen, und fügen Sie ios-und android-Plattformen mit:
$ phonegap create project_name
$ phonegap build ios
$ phonegap build android
Habe ich ; innen config.xml (versucht, verschiedene Möglichkeiten, keiner arbeitet) und "stay-in-webview" auf false gesetzt.
Nur die änderungen, die ich in der www/index.html Datei wurde zum hinzufügen von links, die Seite inklusive aller Standard-Skripte(phonegap.js, js/index.js und ein Aufruf von app.initialize()).
Ich habe versucht, alle diese links klicken, werden alle geöffneten innerhalb der webview:
<a href="#" onclick="window.open('http://www.google.com', '_blank', 'location=yes');">_blank</a>
<a href="#" onclick="window.open('http://www.google.com', '_system', 'location=yes');">_system</a>
<a href="#" onclick="window.open('http://www.google.com', '_system');">_system</a>
<a href="http://www.google.com" target="_blank">target _blank</a>
<a href="http://www.google.com">no target</a>
Machen deutlich, dass alle tests, die ich gemacht wo getan in der ios-simulator und dem android-emulator.
Ich gesucht habe, sehr viel versucht, alles, was ich gefunden, aber nichts funktioniert. Vielen Dank für jede Hilfe
InformationsquelleAutor T4deu | 2013-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Links in einer Cordova - /PhoneGap-App öffnen in der Standard-browser des Gerätes, müssen Sie sicherstellen, dass
window.open(<url>, '_system');
wird verwendet, um darauf zuzugreifen. Damit dies tatsächlich funktionieren -vielleicht ein bisschen counter-intuitiv - Sie brauchen, um den 'InAppBrowser' plug-in.In Cordova version 2.9.0 der 'InAppBrowser' plug-in ist integriert und Sie müssen lediglich sicherstellen, dass es nicht auskommentiert ist in Cordova ' s
config.xml
. Von der version 3.0.0 auf Sie haben, installieren Sie das plug-in durch ausführen dieser Befehl von Ihrem Projekt-Verzeichnis:Aus der Cordova-Dokumentation, wie 'InAppBrowser' wird das zweite argument
target
vonFenster.open()
in seiner übersteuerten Umsetzung:Ziel: Das Ziel in dem laden der URL, einen optionalen parameter, der standardmäßig auf
_self
. (String)_self
: Öffnet sich in der Cordova WebView wenn der URL in der weißen Liste, andernfalls es öffnet sich in der InAppBrowser._blank
: Öffnet in der InAppBrowser._system
: Öffnet in den system-web-browser.Zu trennen, um Bedenken und zu verhindern, dass ich vergessen hinzuzufügen
onclick
Attribut zu jedem<a/>
will ich öffnen in der Standard-browser, ich möchte dynamisch anfügen, dass das Verhalten per JavaScript. Unten ist ein Beispiel der Verwendung von jQuery, in denen das Verhalten auch wieder angebracht nach der UMLADUNG der beteiligten HTML-Code über XHR. Und es wird nur an externe links, damit auch verhindert, dass Sie esmailto:
links.Ein weiterer dynamischer Ansatz für, wenn es weniger externe links als interne:
$('a[target=_system]').click(function(){...})
Für neuere PhoneGap-Versionen, die Sie nicht brauchen, die InAppBrowser-plugin. Aber stellen Sie sicher, dass die white-list ist korrekt konfiguriert. E. g. in config.xml
<access origin="*"/> <plugin name="cordova-plugin-whitelist"/> <allow-intent href="http://*/*"/>
Finden Sie unter cordova.apache.org/docs/en/latest/guide/appdev/whitelist/...InformationsquelleAutor ᴠɪɴᴄᴇɴᴛ
Ich auch diesem problem begegnet.
Scheint, die meisten beantwortet sind genau das Gegenteil der Frage, die Menschen in der Regel Antworten wie auf das öffnen im inAppBrowser, ich weiß nicht, warum.
Genau wie Sie ich habe versucht, verschiedene Methoden, aber keine Arbeit.
Schließlich habe ich auf native Weise.
Zum Glück, nativen Weg nahm meine nur um nicht mehr als 10 Minuten, die ist viel kürzer, als zu versuchen Leute phonegap Antworten.
In Android,
fügen Sie eine Methode hinzu, die auf Ihrem gebundenen Objekt, das akzeptieren einer url-Zeichenfolge und Verhalten öffnen Sie browser-Verhalten.
In html
Für iOS
1. hinzufügen, delegieren der MainViewController.h (in meinem Projekt ist es dieser name)
2. set MainViewController als ein webView ist delegieren, fügen Sie folgende Zeile in
- (void)webViewDidFinishLoad:(UIWebView*)theWebView{
block3. umzusetzen " - (BOOL)webView:shouldStartLoadWithRequest:navigationType:" Methode:
Schließlich ändern Sie Ihre html-Aufruf wie unten:
Das ist es.
Es einfacher, als ich dachte und für mich arbeiten.
Und ich denke, dies kann verhindern, dass phonegap-api-änderung in der Zukunft wieder.
Hoffe, dass dies auch für Sie nützlich.
InformationsquelleAutor Solomon
Ich bin mir nicht sicher, ob das noch relevant ist, aber meine 5c: ich habe gerade einige Neukonfiguration auf meine Cordova 3.3 (nicht PhoneGap Build) app, und lief in das gleiche Problem.
Sie nicht wirklich brauchen, das plugin für das - stellen Sie sicher, link mit:
...wie Sie geschrieben UND wichtig, in Ihrem project/xml/config.xml
Ich habe auch die in-app-browser deaktiviert:
...jetzt funktioniert es wieder gut 😉
InformationsquelleAutor Chris
Lassen Sie eine Antwort,aber vielleicht kann jemand helfen.
Cordova 3.3.1
InformationsquelleAutor AtanuCSE
Kämpfte ich versuchen zu bekommen, PhoneGap die inappbrowser arbeiten auf Android, aber nie kein Glück. Mit, dass gesagt wird, ich habe nur den Vorteil von Android ist die native Funktionalität (die Systeme browser und dem Gerät die zurück-Taste). Ich bemerkte aus den folgenden
<access origin="*" />
in der config.xml Datei und nur Hinzugefügt der link:Dieser arbeitete bestraft, link öffnet sich im Geräte-browser und dem Gerät die zurück-Taste, geht nach rechts zurück zu der gleichen Stelle in der app der Benutzer war. Eher oder nicht, das Gerät mit einem Netzwerk verbunden ist, werden auch diese verarbeitet.
meine iOS-version der app arbeitet gut mit dem inappbrowser.
InformationsquelleAutor josh_bailey4
In iOS (zumindest mit PhoneGap 2.9) dies funktioniert
InformationsquelleAutor Kuide
Wenn Sie eine Verbindung herstellen möchten externer link rel Attribut. wie
<a href="">
und alles korrekt funktioniert.Deine Antwort funktioniert nicht für Phonegap-App!
InformationsquelleAutor idurvesh