Geschichte.zurück funktioniert nicht auf iOS mithilfe von Cordova
Habe ich eine hybrid-Anwendung entwickelt, mit Cordova. Die app ist sehr einfach, so dass ich nicht verwendet haben, einen Rahmen. Fast alle Seiten injiziert werden, die über Ajax mit dem jQuery - ajax()
Methode, und dann Hinzugefügt, die Geschichte mit dem HTML5-History-API, über die pushState()
Methode.
Um dem Benutzer zu ermöglichen, gehen Sie zurück zu einer zuvor besuchten Seite (eine Seite in der Geschichte), habe ich einen button. Ich höre für die backbutton
Ereignis als auch Hähne auf, die Taste und, wenn das Ereignis ausgelöst wird, führe ich folgende Prozedur:
onBackButton: function() {
window.history.length === 0 ? navigator.app.exitApp() : window.history.back();
}
Sicher zu sein, um die maximale Kompatibilität möglich, außerdem habe ich history.js für das Projekt.
Es funktioniert wie ein Charme auf dem Android-und dem iOS-simulator auf dem Mac, funktioniert aber nicht auf einem echten Gerät. Was passiert, ist, dass iOS abfangen des Ereignisses, aber die Ausführung der Methode nicht die Seite wechseln. Ich habe schon versucht mehrere Methoden, basierend auf früheren Antworten auf StackOverflow, aber kein Glück. Einige Beispiele sind: Geschichte.zurück() funktioniert nicht in phonegap ios erstellen und Phonegap - navigator.app.backHistory() funktioniert nicht auf HTML zurück button.
Was ich versuchen kann?
- Haben Sie überprüft, die cordova bug-Liste? Ich habe sich mit diesen "arbeiten mit dem simulator, aber nicht auf dem Gerät auf" Themen vor und Sie sind unglaublich frustrierend.
- Leider habe ich bisher noch nicht finden, Fragen, die im Zusammenhang zu dieser.
- Frage nur, sondern können Sie erstellen, die Geschichte Entitäten, so verwenden Sie statt? So etwas wie cookies...
- So etwas wie dieses, developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/...
- Kann u Aktie ein minimaler code aus dem Projekt, die verwendet werden können, zu replizieren, das Problem?
- versuchen Sie, diese one Get vorherigen Seite phonegap-javascript
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gesehen, das beantworten von ein paar Monaten wieder? Offenbar iOS hat einige Sicherheits-Probleme, wenn es um die Navigation Geschichte durch das Drehbuch allein. Hier die Antwort enthält auch eine Arbeit um, die von der Vermischung der URLs: StackOverflow-Frage
Können Sie einfach,
zurück navigieren.
Versuchen, diese ein.
main.js
page1.js
page2.js
Referenz: http://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v620/BuildingMultiPageApplicationProject.zip
Weiß nicht, ob cordova selbst hat der navigator.. aber ich in der Regel verwendet diese Funktion zurück:
Konnte es nicht testen aber.
Bearbeiten:
Da brauchen Sie sich nicht vollständig regenerieren und laden fast alles über ajax, die Sie vielleicht implementieren müssen, um die Geschichte wieder selbst.. das iphone hat einige Probleme mit javascript Seiten auf, wenn Sie wieder gehen. Da schieben Sie Ihre Aktionen, um der Geschichte sollte es nicht zu schwer:
Wie etwa
app.application.navigate("#:back")
?Glaube ich nicht das Cordova, aber dieser code könnte helfen:
Diesem Skript:
1) die Arbeit mit Webseiten, die verwendet hashes ( http(s)://(www.)name.domain/#urlHash ).
2) " - Fenster . onload" - Funktion überprüfen, ob die eingegebenen url enthalten einen hash und init browserHistory mit ihm oder mit: "" ( leerer string ) - keine hash ist mein Haupt-Seite
3) "browserHistory" Objekt, speichern Sie eine Seite der Geschichte
4) "hash" - Funktion ohne argument aufgerufen, gibt den aktuellen url zurück hash und mit "name" - parameter ändern Sie hash-url
5) Bei der hash geändert wird " - Fenster . onhashchange" - Funktion aufgerufen
6) " - Fenster . onhashchange" Funktion check hash
Wenn die url nicht enthalten hash-script laden der Standard-Seite.
Wenn die url enthält einen hash, script laden einer Unterseite basierend auf hash.
7) In Funktion "load" ( hier nicht beschrieben ) habe ich ein XMLHttpRequest-Objekt, das aufrufen, php-Datei mit dem Namen argument und an die Haupt-div-element der html-code, der zurückgegeben wurde, aus, dass php-Datei.
8) Anstatt ( zum Beispiel ):
Können Sie ( unter anderem ):
9) Funktion mit dem Namen: "Last", ein Objekt, das als parameter. Dieses Objekt ist zu senden an die php-Datei ( als "$_GET" oder "$_POST" array ), so können Sie rufen Sie "load" - Funktion mit benutzerdefinierten Objekt enthält, zum Beispiel die login-Felder Werte.
10) "browserHistory" haben nur die hashes auf der Seite.
Dies wird Ihr button-onclick-Funktion:
Können Sie ändern, ein "browserHistory . rückwärts" - Funktion, um Ihre Anwendung zu beenden, indem Sie ersetzen: "return;" in dieser Zeile:
mit Ihrer Anwendung exit-code.