Improve mobile detection + handle iOS side view

pull/382/head
Thibaut Courouble 9 years ago
parent 0e8aeed854
commit 29efcef748

@ -242,15 +242,7 @@
!!(@DOC or @doc) !!(@DOC or @doc)
isMobile: -> isMobile: ->
try @_isMobile ?= app.views.Mobile.detect()
# Need to sniff the user agent because some Android and Windows Phone devices don't take
# resolution (dpi) into account when reporting device width/height.
@_isMobile ?= (window.matchMedia('(max-device-width: 767px)').matches) or
(window.matchMedia('(max-device-height: 767px) and (max-device-width: 1024px)').matches) or
(navigator.userAgent.indexOf('Android') isnt -1 and navigator.userAgent.indexOf('Mobile') isnt -1) or
(navigator.userAgent.indexOf('IEMobile') isnt -1)
catch
@_isMobile = false
isInvalidLocation: -> isInvalidLocation: ->
@config.env is 'production' and location.host.indexOf(app.config.production_host) isnt 0 @config.env is 'production' and location.host.indexOf(app.config.production_host) isnt 0

@ -3,6 +3,9 @@ class app.views.Document extends app.View
@el: document @el: document
@events:
visibilitychange: 'onVisibilityChange'
@shortcuts: @shortcuts:
help: 'onHelp' help: 'onHelp'
escape: 'onEscape' escape: 'onEscape'
@ -38,6 +41,14 @@ class app.views.Document extends app.View
setTitle: (title) -> setTitle: (title) ->
@el.title = if title then "DevDocs - #{title}" else 'DevDocs API Documentation' @el.title = if title then "DevDocs - #{title}" else 'DevDocs API Documentation'
onVisibilityChange: =>
return unless @el.visibilityState is 'visible'
@delay ->
location.reload() if app.isMobile() isnt app.views.Mobile.detect()
return
, 300
return
onHelp: -> onHelp: ->
app.router.show '/help#shortcuts' app.router.show '/help#shortcuts'

@ -9,6 +9,18 @@ class app.views.Mobile extends app.View
@routes: @routes:
after: 'afterRoute' after: 'afterRoute'
@detect: ->
try
(window.matchMedia('(max-width: 480px)').matches) or
(window.matchMedia('(max-device-width: 767px)').matches) or
(window.matchMedia('(max-device-height: 767px) and (max-device-width: 1024px)').matches) or
# Need to sniff the user agent because some Android and Windows Phone devices don't take
# resolution (dpi) into account when reporting device width/height.
(navigator.userAgent.indexOf('Android') isnt -1 and navigator.userAgent.indexOf('Mobile') isnt -1) or
(navigator.userAgent.indexOf('IEMobile') isnt -1)
catch
false
constructor: -> constructor: ->
@el = document.documentElement @el = document.documentElement
super super

Loading…
Cancel
Save