移动设备、手机浏览器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>

 

欢迎转载,欢迎批评指正!

### JavaWeb JSP EasyUI 分页查询实现方法 #### 1. 准备工作 为了在JavaWeb项目中使用JSP页面和EasyUI实现分页查询,首先需要确保项目的环境搭建完成。这包括引入必要的库文件以及设置开发工具。 - **引入所需Jar包** 需要引入EasyUI的JavaScript和CSS资源文件,可以通过CDN链接或者本地路径来加载这些静态资源[^3]。 同时还需要引入用于处理HTTP请求响应的相关Servlet API jar包,以便能够接收前端传来的参数并返回相应的数据给前端显示。 #### 2. 创建数据库连接池 建立稳定的数据库访问机制对于任何基于关系型数据库的应用程序都是至关重要的。可以采用Druid或其他类似的高效能连接池组件来进行管理[^4]。 ```xml <!-- Druid 数据源配置 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <!-- 设置基本属性 url、username、password --> </bean> ``` #### 3. 编写Service层逻辑 编写业务服务类负责具体的业务流程控制和服务接口定义。这里主要涉及到如何获取指定范围内的记录集,并计算总条目数以支持分页展示需求。 ```java public List<Map<String,Object>> findPageData(int page,int rows){ int start=(page-1)*rows; String sql = "select * from table limit ?,?"; // 使用PreparedStatement防止SQL注入攻击 PreparedStatement pstmt=conn.prepareStatement(sql); pstmt.setInt(1,start); pstmt.setInt(2,rows); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ Map<String,Object> map=new HashMap<>(); // 将每一行的数据存入map集合中... list.add(map); } } ``` #### 4. 构建Controller控制器 构建一个Servlet作为前后端交互的桥梁,用来解析用户的输入并将结果反馈回去。在这个过程中会调用上面提到的服务层方法来取得实际的数据列表及其总数信息。 ```java protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { // 获取当前页码和每页大小 Integer pageNum=Integer.parseInt(request.getParameter("pageNum")); Integer pageSize=Integer.parseInt(request.getParameter("pageSize")); PageBean pb=service.findPage(pageNum,pageSize); PrintWriter out=response.getWriter(); JSONObject json=new JSONObject(); json.put("total",pb.getTotal()); json.put("rows",JSONArray.toJSON(pb.getList())); out.print(json.toString()); out.flush(); out.close(); } ``` #### 5. 设计视图界面(JSP) 最后就是设计网页布局部分了,在此阶段主要是利用HTML标签配合EasyUI控件特性快速构建美观易用的操作面板。特别是datagrid表格组件非常适合做此类场景下的数据显示容器。 ```html <table id="dg"></table> <script type="text/javascript"> $(function(){ $('#dg').datagrid({ title:'我的数据', iconCls:'icon-save', nowrap: true, striped: true, collapsible:true, fitColumns: true, singleSelect:false, pagination:true, rownumbers:true, sortName:'id', sortOrder:'asc', remoteSort: false, columns:[[ {field:'ck',checkbox:true}, {title:'编号',field:'id',width:80,sortable:true}, ... ]], toolbar:[ {text:'新增'}, '-', {text:'删除'} ], onClickRow:function(rowIndex,rowData){ }, onLoadSuccess:function(data){ console.log('成功'); } }); }); </script> ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值