Переглянути джерело

Fix on Pull & Refresh

Bind / Unbind to preventDefault (scrolls fix)
piniphone 13 роки тому
батько
коміт
e83131ecf7
1 змінених файлів з 9 додано та 1 видалено
  1. 9 1
      src/element/Lungo.Element.Pull.coffee

+ 9 - 1
src/element/Lungo.Element.Pull.coffee

@@ -87,8 +87,13 @@ Lungo.Element.Pull = (element_selector, config_data) ->
     else
       hide()
 
+  _bindPreventDefault = (event) ->    ELEMENT[0].addEventListener "touchmove", _prevent
+  _unbindPreventDefault = (event) ->  ELEMENT[0].removeEventListener "touchmove", _prevent
+  _prevent = (event) -> do event.preventDefault
+
   (->
     STARTED = false
+    BINDED_TO_PREVENT = false
     INI_Y = {}
     ELEMENT.bind("touchstart", (event) ->
       if ELEMENT[0].scrollTop <= 1
@@ -96,13 +101,16 @@ Lungo.Element.Pull = (element_selector, config_data) ->
         INI_Y = (if $$.isMobile() then event.touches[0].pageY else event.pageY)
     ).bind("touchmove", (event) ->
       if not REFRESHING and STARTED
-        do event.preventDefault
         current_y = (if $$.isMobile() then event.touches[0].pageY else event.pageY)
         CURRENT_DISTANCE = current_y - INI_Y
         if CURRENT_DISTANCE >= 0
           ELEMENT.style "overflow-y", "hidden"
+          _bindPreventDefault(event) unless BINDED_TO_PREVENT
+          BINDED_TO_PREVENT = true
           _handlePulling()
     ).bind "touchend", ->
+      _unbindPreventDefault(event) if BINDED_TO_PREVENT
+      BINDED_TO_PREVENT = false
       if STARTED
         ELEMENT.style "overflow-y", "scroll"
         _handlePullEnd()