J'ai un problème avec le Web après avoir ajouté une icône à l'écran d'accueil. Si le Web est lancé à partir de l'écran d'accueil, tous les liens s'ouvriront dans une nouvelle fenêtre dans Safari (et perdront la fonctionnalité plein écran). Comment puis-je l'empêcher? Je n'ai trouvé aucune aide, seulement la même question sans réponse.
iphone
safari
iphone-standalone-web-app
Pavel Linkesch
la source
la source
scope
paramètre dansmanifest.json
. Voir ma réponse pour plus de détails. Je l'ai testé dans iOS 11.3 et cela fonctionne.Réponses:
J'ai trouvé une solution JavaScript dans le framework iWebKit :
la source
[].forEach.call(document.links, function(link) { link.addEventListener("click", function(event) { event.preventDefault(); window.location = this.href; }) });
Les autres solutions ici ne tiennent pas compte des liens externes (que vous souhaitez probablement ouvrir en externe dans Safari) ou ne tiennent pas compte des liens relatifs (sans le domaine en eux).
Le projet html5 mobile-passe-partout est lié à cet essentiel qui a une bonne discussion sur le sujet: https://gist.github.com/1042026
Voici le code final qu'ils ont trouvé:
la source
Si vous utilisez jQuery, vous pouvez faire:
la source
this.href
plutôt que de lancer vers un objet jQuery, mais merci pour cette réponse. Fonctionne sur iOS6.Cela fonctionne pour moi sur iOS 6.1 et avec les liens Bootstrap JS (c'est-à-dire les menus déroulants, etc.)
la source
$('a').on('click'
, function (e) {`par$('area').on('click'
, function (e) {` mais cela ne semble pas fonctionner non plus. Des idées?a
avec,href="#"
vous pouvez être plus précis sur le sélecteur jquery, par exemple$('a[href!="#"]')
C'est une vieille question et de nombreuses solutions ici utilisent javascript. Depuis lors, iOS 11.3 a été publié et vous pouvez désormais utiliser le membre de l' étendue . Le membre de l'étendue est une URL comme
"/"
où tous les chemins sous cette étendue n'ouvriront pas une nouvelle page.Voici mon exemple:
Vous pouvez également en savoir plus ici . Je recommande également d'utiliser le générateur qui fournira cette fonctionnalité.
la source
Sur la base de la réponse de Davids et du commentaire de Richards, vous devez effectuer une vérification de domaine. Sinon, des liens vers d'autres sites Web s'ouvriront également dans votre application Web.
la source
Si vous utilisez jQuery Mobile, vous rencontrerez la nouvelle fenêtre lors de l'utilisation de l'attribut data-ajax = 'false'. En fait, cela se produira chaque fois que ajaxEnabled est désactivé, par un lien externe, par un paramètre $ .mobile.ajaxEnabled ou en ayant un attribut target = ''.
Vous pouvez le réparer en utilisant ceci:
(Merci à Richard Poole pour la méthode live () - ne fonctionnait pas avec bind ())
Si vous avez désactivé ajaxEnabled globalement, vous devrez supprimer [data-ajax = 'false'].
Cela m'a pris assez de temps à comprendre car je m'attendais à ce que ce soit un problème spécifique à jQuery Mobile où en fait c'était la liaison Ajax qui interdisait la nouvelle fenêtre.
la source
Ce code fonctionne pour iOS 5 (cela a fonctionné pour moi):
Dans la balise head:
Dans le lien que vous souhaitez ouvrir dans la même fenêtre:
J'ai obtenu ce code de ce commentaire: balises meta pour iphone web
la source
Peut-être devriez-vous autoriser l'ouverture de liens dans une nouvelle fenêtre lorsque la cible est également définie explicitement sur "_blank":
la source
J'en ai trouvé un qui est très complet et efficace car il vérifie qu'il ne fonctionne que sous WebApp autonome, fonctionne sans jQuery et est également simple, juste testé sous iOS 8.2:
Restez autonome: empêchez les liens dans les applications Web autonomes d'ouvrir Mobile Safari
la source
Vous pouvez également créer des liens presque normalement:
Et vous pouvez supprimer la balise de hachage et href, tout ce qu'elle fait affecte l'apparence.
la source
C'est ce qui a fonctionné pour moi sur iOS 6 (très légère adaptation de la réponse de rmarscher):
la source
Ceci est une version légèrement adaptée de Sean qui empêchait le bouton de retour
});
la source
Pour ceux qui ont Twitter Bootstrap et Rails 3
Les liens de suppression fonctionnent toujours de cette façon.
la source
Je préfère ouvrir tous les liens à l'intérieur du mode d'application Web autonome, sauf ceux qui ont target = "_ blank". En utilisant jQuery, bien sûr.
la source
Une solution de contournement que j'ai utilisée pour une application Web iOS était que j'ai créé tous les boutons de soumission de formulaires (qui étaient des boutons par CSS). J'ai donc ouvert un formulaire qui a posté sur le lien de destination, puis input type = "submit" Ce n'est pas la meilleure façon, mais c'est ce que j'ai compris avant de trouver cette page.
la source
J'ai créé un package installable bower à partir de la réponse de @ rmarscher qui peut être trouvée ici:
http://github.com/stylr/iosweblinks
Vous pouvez facilement installer l'extrait avec bower en utilisant
bower install --save iosweblinks
la source
Pour ceux qui utilisent
JQuery Mobile
, les solutions ci-dessus cassent la boîte de dialogue contextuelle. Cela conservera les liens dans l'application Web et autorisera les fenêtres contextuelles.Pourrait également le faire en:
la source
Voici ce que j'utiliserais pour tous les liens sur une page ...
Si vous utilisez jQuery ou Zepto ...
la source
Vous pouvez simplement supprimer cette balise meta.
la source