Ich habe ein Problem mit dem Web, nachdem ich dem Startbildschirm ein Symbol hinzugefügt habe. Wenn das Web über den Startbildschirm gestartet wird, werden alle Links in Safari in einem neuen Fenster geöffnet (und verlieren die Vollbildfunktionalität). Wie kann ich das verhindern? Ich konnte keine Hilfe finden, nur die gleiche unbeantwortete Frage.
iphone
safari
iphone-standalone-web-app
Pavel Linkesch
quelle
quelle
scope
Parameter in verwendenmanifest.json
. Siehe meine Antwort für weitere Details. Ich habe es in iOS 11.3 getestet und es funktioniert.Antworten:
Ich habe eine JavaScript-Lösung im iWebKit- Framework gefunden:
quelle
[].forEach.call(document.links, function(link) { link.addEventListener("click", function(event) { event.preventDefault(); window.location = this.href; }) });
Die anderen Lösungen hier berücksichtigen entweder keine externen Links (die Sie wahrscheinlich extern in Safari öffnen möchten) oder keine relativen Links (ohne die darin enthaltene Domain).
Das html5 Mobile-Boilerplate-Projekt verweist auf diesen Kern, der eine gute Diskussion zum Thema enthält: https://gist.github.com/1042026
Hier ist der endgültige Code, den sie sich ausgedacht haben:
quelle
Wenn Sie jQuery verwenden, können Sie Folgendes tun:
quelle
this.href
anstatt in ein jQuery-Objekt umzuwandeln, aber danke für diese Antwort. Funktioniert unter iOS6.Dies funktioniert für mich unter iOS 6.1 und mit Bootstrap JS-Links (dh Dropdown-Menüs usw.)
quelle
$('a').on('click'
Funktion (e) {`durch$('area').on('click'
Funktion (e) {` zu ersetzen , aber das scheint auch nicht zu funktionieren. Irgendwelche Ideen?a
mit ,href="#"
dann können Sie spezifischere auf dem jQuery - Selektor, zB$('a[href!="#"]')
Dies ist eine alte Frage, und viele der hier verwendeten Lösungen verwenden Javascript. Seitdem wurde iOS 11.3 veröffentlicht und Sie können jetzt das Scope-Mitglied verwenden . Das Bereichsmitglied ist eine URL,
"/"
bei der nicht alle Pfade unter diesem Bereich eine neue Seite öffnen.Hier ist mein Beispiel:
Sie können auch weitere Informationen lesen Sie hier . Ich empfehle auch die Verwendung des Generators, der diese Funktionalität bietet.
quelle
Basierend auf Davids Antwort und Richards Kommentar sollten Sie eine Domainprüfung durchführen. Andernfalls werden auch Links zu anderen Websites in Ihrer Web-App geöffnet.
quelle
Wenn Sie jQuery Mobile verwenden, wird das neue Fenster angezeigt, wenn Sie das Attribut data-ajax = 'false' verwenden. Tatsächlich geschieht dies immer dann, wenn ajaxEnabled durch einen externen Link, durch eine Einstellung von $ .mobile.ajaxEnabled oder durch ein Attribut target = '' deaktiviert wird.
Sie können dies folgendermaßen beheben:
(Danke an Richard Poole für die live () Methode - funktionierte nicht mit bind ())
Wenn Sie ajaxEnabled global deaktiviert haben, müssen Sie [data-ajax = 'false'] löschen.
Es dauerte ziemlich lange, bis ich herausgefunden hatte, dass es sich um ein jQuery Mobile-spezifisches Problem handelte, bei dem es tatsächlich die Ajax-Verknüpfung war, die das neue Fenster tatsächlich verbot.
quelle
Dieser Code funktioniert für iOS 5 (er hat bei mir funktioniert):
In der Kopfmarke:
In dem Link, den Sie im selben Fenster öffnen möchten:
Ich habe diesen Code aus diesem Kommentar erhalten: iPhone Web App Meta-Tags
quelle
Vielleicht sollten Sie zulassen, dass Links in einem neuen Fenster geöffnet werden, wenn das Ziel explizit auf "_blank" gesetzt ist:
quelle
Ich habe eine gefunden, die sehr vollständig und effizient ist, da sie überprüft, ob sie nur unter eigenständiger WebApp ausgeführt wird, ohne jQuery funktioniert und auch unkompliziert ist und nur unter iOS 8.2 getestet wurde:
Standalone bleiben: Verhindern Sie Links in eigenständigen Web-Apps, die Mobile Safari öffnen
quelle
Sie können auch fast normal verknüpfen:
Und Sie können das Hash-Tag und href entfernen, alles, was es tut, wirkt sich auf das Erscheinungsbild aus.
quelle
Dies hat bei iOS 6 für mich funktioniert (sehr geringfügige Anpassung der Antwort von rmarscher):
quelle
Dies ist eine leicht angepasste Version von Sean, die den Zurück-Button verhinderte
});
quelle
Für diejenigen mit Twitter Bootstrap und Rails 3
Löschlinks funktionieren immer noch so.
quelle
Ich ziehe es vor, alle Links im eigenständigen Web-App-Modus zu öffnen, mit Ausnahme derjenigen, deren Ziel = "_ leer" ist. Natürlich mit jQuery.
quelle
Eine Problemumgehung, die ich für eine iOS-Web-App verwendet habe, war, dass ich alle Links (die Schaltflächen per CSS waren) über Submit-Schaltflächen erstellt habe. Also öffnete ich ein Formular, das auf dem Ziellink gepostet wurde, und gab dann type = "submit" ein. Nicht der beste Weg, aber es ist das, was ich herausgefunden habe, bevor ich diese Seite gefunden habe.
quelle
Aus der Antwort von @ rmarscher habe ich ein installierbares Bower- Paket erstellt, das hier zu finden ist:
http://github.com/stylr/iosweblinks
Sie können das Snippet einfach mit der Laube installieren
bower install --save iosweblinks
quelle
Für diejenigen
JQuery Mobile
, die diese verwenden , unterbrechen die oben genannten Lösungen den Popup-Dialog. Dadurch bleiben Links in der Webanwendung erhalten und Popups sind möglich.Könnte es auch tun durch:
quelle
Folgendes würde ich für alle Links auf einer Seite verwenden ...
Wenn Sie jQuery oder Zepto verwenden ...
quelle
Sie können dieses Meta-Tag einfach entfernen.
quelle