How to Prevent iOS Standalone Mode Web Apps From Opening Links in Safari (CoffeeScript Version)

Apple conveniently let’s users add any site to their home screen as a standalone web application that acts much like a native application.

But there’s one problem – by default all links open in Safari rather than in the web application. Very annoying.

I found a few bits of code out there to workaround this issue, the best of which came from Stanislav Kostadinov. Since we use mostly CoffeeScript, here’s a CS version:

# based on http://stanislav.it/how-to-prevent-ios-standalone-mode-web-apps-from-opening-links-in-safari/
if window.navigator.standalone?
noddy = false
remotes = false
document.addEventListener 'click', (event) ->
noddy = event.target
while noddy.nodeName isnt 'A' and noddy.nodeName isnt 'HTML'
noddy = noddy.parentNode
if noddy.href? and !!~ noddy.href.indexOf('http') and (!!~ noddy.href.indexOf(document.location.host) || remotes)
event.preventDefault()
document.location.href = noddy.href
return
, false

view raw
standalone.coffee
hosted with ❤ by GitHub

3 thoughts on “How to Prevent iOS Standalone Mode Web Apps From Opening Links in Safari (CoffeeScript Version)”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s