网页可见区域宽:document.body.clientWidthjavascript
网页可见区域高:document.body.clientHeight
java
网页可见区域宽:document.body.offsetWidth (包括边线的宽) 浏览器
网页可见区域高:document.body.offsetHeight (包括边线的宽)
微信
网页正文全文宽:document.body.scrollWidth ide
网页正文全文高:document.body.scrollHeight ui
网页被卷去的高:document.body.scrollTop this
网页被卷去的左:document.body.scrollLeft spa
网页正文部分上:window.screenTop .net
网页正文部分左:window.screenLeft code
屏幕分辨率的高:window.screen.height
屏幕分辨率的宽:window.screen.width
屏幕可用工做区高度:window.screen.availHeight
屏幕可用工做区宽度:window.screen.availWidth
各属性在不一样浏览器下的差别及兼容问题:blog.csdn.net/lhjuejiang/…
touchstart事件:当手指触摸屏幕时候触发,即便已经有一个手指放在屏幕上也会触发。
touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件能够阻止滚动。
touchend事件:当手指从屏幕上离开的时候触发。
touchcancel事件:当系统中止跟踪触摸的时候触发。关于这个事件的确切出发时间,文档中并无具体说明,我们只能去猜想了。
clientX:触摸目标在视口中的x坐标。
clientY:触摸目标在视口中的y坐标。
identifier:标识触摸的惟一ID。
pageX:触摸目标在页面中的x坐标。
pageY:触摸目标在页面中的y坐标。
screenX:触摸目标在屏幕中的x坐标。
screenY:触摸目标在屏幕中的y坐标。
target:触目的DOM节点目标。
touch事件及属性详解:blog.csdn.net/lee_magnum/…
window.addEventListener('touchmove', e => {
e.preventDefault()
},{ passive: false }
)
复制代码
经过上面的代码能够成功阻止微信内置浏览器的下拉出现网址的问题,但也会影响scroll事件。
故对e.preventDefault()事件添加判断条件:
下拉事件是在滚动条出如今页面顶部,touchmove时才出现,上面代码阻止了全部的touchmove触发的事件,这里只须要在touchmove的pageY>touchstartY,且document.body.scrollTop===0时阻止触发浏览器默认事件便可。
(document.body.scrollTop会有兼容性问题,改用document.documentElement.scrollTop || window.pageYOffset代替)
window.addEventListener('scroll', () => {
let scrollHeight = document.documentElement.scrollTop || window.pageYOffset
this.scrollHeight = scrollHeight
let dHeight = document.body.offsetHeight
let wHeight = window.screen.height
if (scrollHeight >= dHeight - wHeight) {
//滚动条滚动到页面底部
doSomething()
}
})
window.addEventListener('touchstart', e => {
this.startY = e.targetTouches[0].clientY
this.startPageY = e.targetTouches[0].pageY
})
window.addEventListener('touchmove', e => {
this.moveY = e.targetTouches[0].clientY - this.startY
this.movePageY = e.targetTouches[0].pageY - this.startPageY
// 当滚动条位于顶部,执行下拉操做时,阻止浏览器默认事件
if (this.movePageY > 0 && this.scrollHeight === 0) {
e.preventDefault()
}
if (this.movePageY < 150) { //下拉距离小于150px
this.pullDownMessage = '下拉刷新'
} else {
this.pullDownMessage = '释放当即刷新'
}
}, { passive: false })
window.addEventListener('touchend', e => {
this.endY = e.changedTouches[0].clientY
this.movePageY = e.changedTouches[0].pageY - this.startPageY
if(this.endY-this.startY>150){ //手指离开屏幕时的位置与手指接触屏幕时位置相差150
doSomething()
}
}) 复制代码