Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 锤击元素防止-webkit溢出滚动:触摸子元素_Javascript_Hammer.js - Fatal编程技术网

Javascript 锤击元素防止-webkit溢出滚动:触摸子元素

Javascript 锤击元素防止-webkit溢出滚动:触摸子元素,javascript,hammer.js,Javascript,Hammer.js,我不知道这是否是一个bug,我是否做错了什么,或者这仅仅是HammerJS的正常行为,但我正在尝试使用HammerJS为我正在使用Cordova开发的应用程序制作一个滑动菜单(Facebook风格) 到目前为止,我的一切都很好,除了一个:HammerJS杀死了原生的-webkit溢出滚动条:touch。我已经和juste讨论了我可以在文档中找到的所有选项,但似乎无法让它工作 有什么想法吗 这是我在coffescript中的代码 Hammer($page, { transform_

我不知道这是否是一个bug,我是否做错了什么,或者这仅仅是HammerJS的正常行为,但我正在尝试使用HammerJS为我正在使用Cordova开发的应用程序制作一个滑动菜单(Facebook风格)

到目前为止,我的一切都很好,除了一个:HammerJS杀死了原生的
-webkit溢出滚动条:touch。我已经和juste讨论了我可以在文档中找到的所有选项,但似乎无法让它工作

有什么想法吗

这是我在coffescript中的代码

Hammer($page, {
        transform_always_block: false,
        drag_block_horizontal: false,
        drag_block_vertical:false
        })
        .on('dragstart', (event)->
            #event.gesture.preventDefault()
            #event.gesture.stopPropagation()
            direction  = event.gesture.direction
            $mainMenu.show()
            $('.UIViewContainer').css(overflow: 'hidden')
            if direction is 'left'
                $('#homeDisableOverlay').animate({
                    opacity: 0
                }, 500, 'ease', ->
                    $(@).hide()
                )
        )
        .on('dragright', (event)->
            event.gesture.stopPropagation()
            direction  = event.gesture.direction
            offsetLeft = $page.offset().left
            scaleMenu  = 0.9 + scaleStep * offsetLeft

            if scaleMenu > 1
                scaleMenu = 1
            if scaleMenu < 0.9
                scaleMenu = 0.9

            if((offsetLeft > sidebarOffset) or (!App.PageDrag)) then return false

            if !App.sidebar
                offset = event.gesture.deltaX
                if offset > sidebarOffset then offset = sidebarOffset
                $page.animate({ translate3d: offset + 'px, 0, 0'}, 0)
                $mainMenuTable.animate({ scale: scaleMenu}, 0)
        )
        .on('dragleft', (event)->
            event.gesture.stopPropagation()
            event.stopPropagation()

            console.log direction

            offsetLeft = $page.offset().left
            scaleMenu  = 0.9 + scaleStep * offsetLeft

            if scaleMenu > 1
                scaleMenu = 1
            if scaleMenu < 0.9
                scaleMenu = 0.9

            if((offsetLeft <= 0) or (!App.PageDrag)) then return false

            if App.sidebar
                offset = sidebarOffset + event.gesture.deltaX
                if offset < 0 then offset = 0
                $page.animate({ translate3d: offset + 'px, 0, 0'}, 0)
                $mainMenuTable.animate({ scale: scaleMenu}, 0)

        )
        .on('dragend', (event)->
            event.gesture.stopDetect()
            event.gesture.preventDefault()
            event.gesture.stopPropagation()
            speed = 300 / event.gesture.velocityX
            if speed > 300 then speed = 300


            if(event.gesture.direction is 'right' and !App.sidebar)
                if((event.gesture.deltaX > sidebarOffset/2) or (event.gesture.velocityX > 0.4))
                    $page.animate({ translate3d: sidebarOffset + 'px, 0, 0'}, speed, 'ease')
                    $mainMenuTable.animate({ scale: 1}, speed, 'ease')
                    App.sidebar = true
                    $('#homeDisableOverlay').show().animate({
                            opacity: 0.3
                        }, 200, 'ease')
                else
                    $page.animate({ translate3d: '0, 0, 0'}, 200, 'ease')
                    $mainMenuTable.animate({ scale: 1}, 200, 'ease')
                $('.UIViewContainer').css(overflow: 'hidden')
                scaleMenu = 1

            else
                if((event.gesture.deltaX < sidebarOffset/2) or (event.gesture.velocityX > 0.4))
                    $page.animate({ translate3d: '0, 0, 0'}, speed, 'ease')
                    $mainMenuTable.animate({ scale: 0.9}, speed, 'ease')
                    App.sidebar = false
                    setTimeout(->
                        document.getElementById('mainMenuScroll').scrollTop = 0
                    ,speed)
                else
                    $page.animate({ translate3d: sidebarOffset + 'px, 0, 0'}, 200, 'ease')
                    $mainMenuTable.animate({ scale: 0.9}, 200, 'ease')
                    setTimeout(->
                        document.getElementById('mainMenuScroll').scrollTop = 0
                    ,200)
                $('.UIViewContainer').css(overflow: 'auto')
                scaleMenu = 0.9
        )
Hammer($page{
变换\u始终\u块:false,
水平拖动块:false,
拖动块垂直:false
})
.on('dragstart',(事件)->
#event.signature.preventDefault()
#event.signature.stopPropagation()
方向=事件。手势。方向
$main menu.show()
$('.UIViewContainer').css(溢出:“隐藏”)
如果方向是“左”
$(“#homeDisableOverlay”)。设置动画({
不透明度:0
},500,'轻松',->
$(@).hide()
)
)
.on('dragright',(事件)->
event.signature.stopPropagation()
方向=事件。手势。方向
offsetLeft=$page.offset().left
scaleMenu=0.9+scaleStep*offsetLeft
如果scaleMenu>1
scaleMenu=1
如果scaleMenu<0.9
scaleMenu=0.9
如果((offsetLeft>sidebarOffset)或(!App.PageDrag)),则返回false
如果!应用程序侧栏
偏移量=event.signature.deltaX
如果偏移>sidebarOffset,则偏移=sidebarOffset
$page.animate({translate3d:offset+'px,0,0'},0)
$mainMenuTable.animate({scale:scaleMenu},0)
)
.on('dragleft',(事件)->
event.signature.stopPropagation()
event.stopPropagation()
console.log方向
offsetLeft=$page.offset().left
scaleMenu=0.9+scaleStep*offsetLeft
如果scaleMenu>1
scaleMenu=1
如果scaleMenu<0.9
scaleMenu=0.9
如果((offsetLeft
event.signature.stopDetect()
event.signature.preventDefault()
event.signature.stopPropagation()
速度=300/event.signature.velocityX
如果速度>300,则速度=300
if(event.signature.direction为“right”且!App.sidebar)
如果((event.signature.deltaX>sidebarOffset/2)或(event.signature.velocityX>0.4))
$page.animate({translate3d:sidebarOffset+'px,0,0'},速度,'ease')
$mainMenuTable.animate({scale:1},速度,'ease')
App.sidebar=true
$('#homeDisableOverlay').show().animate({
不透明度:0.3
},200,‘轻松’)
其他的
$page.animate({translate3d:'0,0,0'},200,'ease')
$mainMenuTable.animate({scale:1},200,'ease')
$('.UIViewContainer').css(溢出:“隐藏”)
scaleMenu=1
其他的
如果((event.signature.deltaX0.4))
$page.animate({translate3d:'0,0,0'},速度,'ease')
$mainMenuTable.animate({scale:0.9},速度,'ease')
App.sidebar=false
设置超时(->
document.getElementById('mainMenuScroll')。scrollTop=0
,速度)
其他的
$page.animate({translate3d:sidebarOffset+'px,0,0'},200,'ease')
$mainMenuTable.animate({scale:0.9},200,'ease')
设置超时(->
document.getElementById('mainMenuScroll')。scrollTop=0
,200)
$('.UIViewContainer').css(溢出:“自动”)
scaleMenu=0.9
)

是的,这显然是HammerJS的预期行为:

我目前正试图找到一个替代方案,让捏手势在不破坏iOS上滚动的情况下在全球范围内工作