Comment empêcher un lien d'une WebApp de s'ouvrir dans Safari ?

Réponses rédigées par Antoine
Dernière mise à jour : 2018-04-23 17:28:23
Thèmes : ios - script - javascript
Question

J'ai une WebApp sur iOS qui contient des liens hypertext. Mon problème est que lorsqu'on clique sur ces liens, ils s'ouvrent non pas dans ma WebApp mais dans Safari. Comment puis-je empêcher un lien d'une WebApp de s'ouvrir dans Safari ?

Réponse

Pour empêcher les pages de vos applications de basculer soudainement dans Safari vous pouvez utiliser le script suivant à insérer entre vos balises HEAD.

<script type="text/javascript">
(function(document,navigator,standalone) {
if ((standalone in navigator) && navigator[standalone]) {
	var curnode, location=document.location, stop=/^(a|html)$/i;
	document.addEventListener('click', function(e) {
		curnode=e.target;
		while (!(stop).test(curnode.nodeName)) {
			curnode=curnode.parentNode;
		}

		if	(
			'href' in curnode && 
			(chref=curnode.href).replace(location.href,'').indexOf('#') && 
			(	!(/^[a-z\+\.\-]+:/i).test(chref) ||                       
				chref.indexOf(location.protocol+'//'+location.host)===0 )
			) {
				e.preventDefault();
				location.href = curnode.href;
			}
	},false);
}
})(document,window.navigator,'standalone');
</script>