移动设备、手机浏览器Javascript滑动事件代码

以下经过本人测试成功。

测试平台:三星S5830I

操作系统:Android 2.3.6

浏览器:UC浏览器

HTML标准:HTML5

测试了三个事件:touchstart、touchmove 和 touchend,并获取了触摸时触点在页面上的坐标,根据坐标进行了左右滑动、上下滑动判断。

代码如下:

<!-- HTML5 -->
<!DOCTYPE html>
<html>
    <head>
        <title>TouchEvent测试</title>
        <meta charset="gbk">
    </head>
    <body>
        <h2>TouchEvent测试</h2>
        <br />
        <div id="version" style="border:2px solid black;background-color:yellow"></div>
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <div id="result" style="border:2px solid red; color:red;">未触发事件!</div>
        <div id="test" style="border:2px solid red">
            <ul>
                <li id="li1">测试条目1</li>
                <li id="li2">测试条目2</li>
                <li id="li3">测试条目3</li>
                <li id="li4">测试条目4</li>
                <li id="li5">测试条目5</li>
                <li id="li6">测试条目6</li>
                <li id="li7">测试条目7</li>
                <li id="li8">测试条目8</li>
                <li id="li9">测试条目9</li>
                <li id="li10">测试条目10</li>
                <li id="li11">测试条目11</li>
                <li id="li12">测试条目12</li>
                <li id="li13">测试条目13</li>
                <li id="li14">测试条目14</li>
                <li id="li15">测试条目15</li>
                <li id="li16">测试条目16</li>
                <li id="li17">测试条目17</li>
                <li id="li18">测试条目18</li>
                <li id="li19">测试条目19</li>
                <li id="li20">测试条目20</li>
            </ul>
        </div>

        <script type="text/javascript">
            //全局变量,触摸开始位置
            var startX = 0, startY = 0;

            //touchstart事件
            function touchSatrtFunc(evt) {
                try
                {
                    //evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等

                    var touch = evt.touches[0]; //获取第一个触点
                    var x = Number(touch.pageX); //页面触点X坐标
                    var y = Number(touch.pageY); //页面触点Y坐标
                    //记录触点初始位置
                    startX = x;
                    startY = y;

                    var text = ‘TouchStart事件触发:(‘ + x + ‘, ‘ + y + ‘)‘;
                    document.getElementById("result").innerHTML = text;
                }
                catch (e) {
                    alert(‘touchSatrtFunc:‘ + e.message);
                }
            }

            //touchmove事件,这个事件无法获取坐标
            function touchMoveFunc(evt) {
                try
                {
                    //evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等
                    var touch = evt.touches[0]; //获取第一个触点
                    var x = Number(touch.pageX); //页面触点X坐标
                    var y = Number(touch.pageY); //页面触点Y坐标

                    var text = ‘TouchMove事件触发:(‘ + x + ‘, ‘ + y + ‘)‘;

                    //判断滑动方向
                    if (x - startX != 0) {
                        text += ‘<br/>左右滑动‘;
                    }
                    if (y - startY != 0) {
                        text += ‘<br/>上下滑动‘;
                    }

                    document.getElementById("result").innerHTML = text;
                }
                catch (e) {
                    alert(‘touchMoveFunc:‘ + e.message);
                }
            }

            //touchend事件
            function touchEndFunc(evt) {
                try {
                    //evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等

                    var text = ‘TouchEnd事件触发‘;
                    document.getElementById("result").innerHTML = text;
                }
                catch (e) {
                    alert(‘touchEndFunc:‘ + e.message);
                }
            }

            //绑定事件
            function bindEvent() {
                document.addEventListener(‘touchstart‘, touchSatrtFunc, false);
                document.addEventListener(‘touchmove‘, touchMoveFunc, false);
                document.addEventListener(‘touchend‘, touchEndFunc, false);
            }

            //判断是否支持触摸事件
            function isTouchDevice() {
                document.getElementById("version").innerHTML = navigator.appVersion;

                try {
                    document.createEvent("TouchEvent");
                    alert("支持TouchEvent事件!");

                    bindEvent(); //绑定事件
                }
                catch (e) {
                    alert("不支持TouchEvent事件!" + e.message);
                }
            }

            window.onload = isTouchDevice;
    </script>
    </body>
</html>

下面是jQuery Mobile实现上下滑动的方式

jQuery Mobile左右滑动事件:swipe(水平滑动30px以上时触发)、swipeLeft(向左滑)、swipeRight(向右滑)

jQuery Mobile垂直滑动事件:scrollstart(上下滚动)、scrollend(滚动停止)

jQuery Mobile触摸点击事件:tap(快速触碰)、taphold(触碰并保持750ms以上触发)

<!DOCTYPE html>
<html>
    <head>
        <title>Ajax测试</title>
        <meta charset="gbk">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="jquery-mobile/jquery.mobile-1.2.0.min.css"/>
        <link rel="stylesheet" href="jquery-mobile/jquery.mobile.structure-1.2.0.min.css"/>
        <script src="jquery-mobile/jquery-1.8.2.min.js"></script>
        <script src="jquery-mobile/jquery.mobile-1.2.0.min.js"></script>
    </head>
    <body>
        <div data-role="page" data-theme="b">
        <div data-role="header"></div>
        <div data-role="content">
            <script>
                //scrollstart事件
                function scrollstartFunc(evt) {
                    try
                    {
                        var target = $(evt.target);
                        while (target.attr("id") == undefined) {
                            target = target.parent();
                        }
                        //获取触点目标id属性值
                        var targetId = target.attr("id");

                        alert("targetId: " + targetId);
                    }
                    catch (e) {
                        alert(‘myscrollfunc:‘ + e.message);
                    }
                }

                function myinit() {
                    //绑定上下滑动事件
                    $("#myul").bind(‘scrollstart‘, function () { scrollstartFunc(event); });
                }

                window.onload = myinit;
            </script>

            <!-- listview测试 -->
            <ul id="myul" data-role="listview" data-inset="true">
                <li data-role="list-divider">信息列表</li>
                <li id="li1" data-role="fieldcontain">信息1</li>
                <li id="li2" data-role="fieldcontain">信息2</li>
                <li id="li3" data-role="fieldcontain">信息3</li>
                <li id="li4" data-role="fieldcontain">信息4</li>
                <li id="li5" data-role="fieldcontain">信息5</li>
                <li id="li6" data-role="fieldcontain">信息6</li>
                <li id="li7" data-role="fieldcontain">信息7</li>
                <li id="li8" data-role="fieldcontain">信息8</li>
                <li id="li9" data-role="fieldcontain">信息9</li>
                <li id="li10" data-role="fieldcontain">信息10</li>
            </ul>
        </div>
    </body>
</html>
时间: 2024-11-08 04:12:47

移动设备、手机浏览器Javascript滑动事件代码的相关文章

【转】让iframe在iOS设备手机浏览器上支持滚动

HTML代码 在使用IFRAME或者其他HTML元素时,你需要使用一个元素(如DIV)来包装他们: <div class="scroll-wrapper"> <iframe src=""></iframe> </div> 这个DIV将作为支持内部滚动的基础容器. CSS 代码 要让IFRAME支持滚动,需要一个常用的CSS属性和一个很少人知道的CSS属性(property): .scroll-wrapper { -we

移动端浏览器上下滑动时头部收缩修复。

某些手机浏览器上下滑动时头部收缩导致页面抖动很烦.然后自己尝试写了一个修复的东西. 使用的浏览器是手机qq浏览器.尚未测试其他浏览器是否可以使用 - -. //移动端浏览器头部收缩修复. var w=$(window), porH = w.height(), //定义初始ScreenHeight; porSCT=0; //定义初始scrollTop w.scroll(function(e) { _T && clearTimeout(_T); _T = setTimeout(function

关于dom节点绑定滑动事件导致浏览器上下滑动失效解决方案

1.移动端开发往往需要添加一下自定义的左右滑动事件,但是添加了左右滑动事件之后就要阻止浏览器大默认事件,否则dom节点的滑动事件和浏览器本身的滑动会出现冲突,导致滑动的时候会出现消失瞬间再出现的效果 解决方案:event.preventDefault();//阻止浏览器默认事件即可 2.阻止浏览器默认事件之后发现这添加了滑动事件的dom节点上下滑动也失效,这是一个很坑爹的地方,如果你的活动dom节点占据了整块屏幕,也就是说你的页面上下动不了了: 解决方案:设置两个开关,分别对应左右滑动和上下滑动

javascript判断手机浏览器版本信息

<script type="text/javascript"> /* * 智能机浏览器版本信息: * */ var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return {//移动终端浏览器版本信息 trident: u.indexOf('Trident') > -1, //IE内核 presto: u.indexOf('Presto

Jquery mobiscroll 移动设备(手机)wap日期时间选择插件以及滑动、滚动插件

Jquery mobiscroll 移动设备(手机)wap日期时间选择插件以及滑动.滚动插件 : http://www.cnblogs.com/linJie1930906722/p/6072984.htm

手机浏览器下IScroll中click事件

产品的h5页面几乎都使用了iscroll插件,如果a标签在iscroll里,在部分手机浏览器中会出现无法点击的情况,不管是绑定click事件还是使用a标签的href属性.href属性偶尔还会能点击,click事件完全不能. 如果用button或input代替a,都能响应click事件. 如果用微信内置浏览器,都能响应click事件(nubia除外).QQ浏览器也能响应. 也就是出现此问题跟手机本地浏览器,iscroll,a标签都有关系. iScroll uses various techniqu

JavaScript键盘事件全面控制代码

JavaScript键盘事件全面控制,它可以捕获键盘事件的输入状态,可以判断你敲打了键盘的那个键,ctrl.shift,26个字母等等,返回具体键盘值. <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>键盘事件全面控制</title> <style type="t

&#31227;&#21160;&#31471;&#19978;&#19979;&#28369;&#21160;&#20107;&#20214;&#20043;--&#22353;&#29241;&#30340;touch.js

转:http://blog.csdn.net/minidrupal/article/details/39611605?utm_source=tuicool&utm_medium=referral 移动端页面的盛行,微信的便利的页面推广等等,让越来越多的css3效果和html5在手机端大放异彩。 于是乎,各式各样的简约酷炫的html5页面层出不穷,最多的就是视差滚动+css3动画。 接下来就说说自己在搞这些页面里面碰到的一个小问题-------zepto.js里面,坑爹的touch.js的上下滑动

移动端touch触屏滑动事件、滑动触屏事件监听!

移动端touch触屏滑动事件.滑动触屏事件监听! 一.触摸事件 ontouchstart.ontouchmove.ontouchend.ontouchcancel 目前移动端浏览器均支持这4个触摸事件,包括IE.由于触屏也支持MouseEvent,因此他们的顺序是需要注意的:touchstart → mouseover → mousemove → mousedown → mouseup → click1 Apple在iOS 2.0中引入了触摸事件API,Android正迎头赶上这一事实标准,缩小