-
-
Save Firestorm-Graphics/9bc39135544e11248d1098dd10e72196 to your computer and use it in GitHub Desktop.
Prevent links in standalone web apps opening Mobile Safari
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<head> | |
<title>Stay Standalone</title> | |
<meta name="apple-mobile-web-app-capable" content="yes"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> | |
<script src="stay_standalone.js" type="text/javascript"></script> | |
</head> | |
<body> | |
<ul> | |
<li><a href="http://google.com/">Remote Link (Google)</a></li> | |
<li><a href="javascript:alert('Awesome script is awesome')">JavaScript Link</a></li> | |
<li><a href="/">Local Link</a></li> | |
<li><a href="#amp">Local Anchor</a></li> | |
</ul> | |
</body> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Mobile Safari in standalone mode | |
if(("standalone" in window.navigator) && window.navigator.standalone){ | |
// If you want to prevent remote links in standalone web apps opening Mobile Safari, change 'remotes' to true | |
var noddy, remotes = false; | |
document.addEventListener('click', function(event) { | |
noddy = event.target; | |
// Bubble up until we hit link or top HTML element. Warning: BODY element is not compulsory so better to stop on HTML | |
while(noddy.nodeName !== "A" && noddy.nodeName !== "HTML") { | |
noddy = noddy.parentNode; | |
} | |
if('href' in noddy && noddy.href.indexOf('http') !== -1 && (noddy.href.indexOf(document.location.host) !== -1 || remotes)) | |
{ | |
event.preventDefault(); | |
document.location.href = noddy.href; | |
} | |
},false); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment