Forked from ChaseFlorell/uriSchemeWithHyperlinkFallback.js
Created
December 6, 2018 15:43
-
-
Save RobinHerbots/052aa8d5c18ccfc7d4e10989e7e7e33c to your computer and use it in GitHub Desktop.
Ever want to launch a mobile app from within the browser, but ensure that the browser still redirects the user to the link if the app isn't installed? This took some fiddling around, but when the "ah ha" moment hit, the solution is really quite simple.
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
// tries to execute the uri:scheme | |
function uriSchemeWithHyperlinkFallback(uri, href) { | |
// set up a timer and start it | |
var start = new Date().getTime(), | |
end, | |
elapsed; | |
// attempt to redirect to the uri:scheme | |
// the lovely thing about javascript is that it's single threadded. | |
// if this WORKS, it'll stutter for a split second, causing the timer to be off | |
document.location = uri; | |
// end timer | |
end = new Date().getTime(); | |
elapsed = (end - start); | |
// if there's no elapsed time, then the scheme didn't fire, and we head to the url. | |
if (elapsed < 1) { | |
document.location = href; | |
} | |
} |
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
function uriSchemeWithHyperlinkFallback(e,t){var n=(new Date).getTime(),r,i;document.location=e;r=(new Date).getTime();i=r-n;if(i<1){document.location=t}} |
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
<html> | |
<head> | |
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> | |
<script src="uriSchemeWithHyperlinkFallback.min.js"></script> | |
</head> | |
<body> | |
<!-- links will work as expected where javascript is disabled--> | |
<a class="intent" | |
href="http://facebook.com/someProfile" | |
data-scheme="fb://profile/10000">facebook</a> | |
<script> | |
// `intent` is the class we're using to wire this up. Use whatever you like. | |
$('a.intent').on('click', function (event) { | |
uriSchemeWithHyperlinkFallback($(this).data('scheme'), $(this).attr('href')); | |
// we don't want the default browser behavior kicking in and screwing everything up. | |
event.preventDefault(); | |
}); | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment