现在的位置: 首页 > 综合 > 正文

Html5模拟android上拉/下拉刷新

2017年12月27日 ⁄ 综合 ⁄ 共 5889字 ⁄ 字号 评论关闭

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ include file="/WEB-INF/tld/taglibs.jsp"%>
<%@page import="cn.com.jsoft.global.Global"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
	<meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>天翼俱乐部---首页</title>
    <link href="css/tyjlb.css" rel="stylesheet" media="all" type="text/css" />
    <script src="js/dragloader.js"></script>

	 <script type="text/javascript" src="/admin/js/jquery-1.8.2.js"></script>
</head>
<body>
<!--page_start-->
<div class="page">
    <!--main_start-->
    <div class="main">
            <!--banner_start-->
            <div class="banner clear-fix">
                <ul>
					 <c:forEach items="${imgClubList}" var="img">
                		<li><a href="${img.url }"><img src="${basePath }${img.uploadaddress}"></a></li>
               	   </c:forEach> 
                </ul>
            </div><!--banner_end-->
            <!--main_news_start-->
            <div class="new clear-fix">
                <!-- newList_bigTitleType_start -->
                <div class="new-title  clear-fix">
                    <div class="new-title-left">最新活动 </div>
                    <div class="new-title-middle">
                        <span class="new-title-line"></span>
                    </div>
                    <div class="new-title-right" onclick="location.href='${basePath}/public/sjkf/clubcolumn/columnList.jspx?${ urlParam}&mobile=${mobile }'">更多<img src="images/zxhd_more.png"> </div>
                </div><!-- NewList_BigTitleType_end -->
                <!--newList_start-->
                <div class="new-list clear-fix">
                    <!--newlist_main_start-->
                    <ul class="new-list-main" id="list_main">
						<c:forEach items="${finalClubDataList}" var="item">
                    		 <li>
	                            <a href="${item.url }">
	                                <!--NewList_L_Img-->
	                                <div class="new-list-l"><img src="${basepath }${item.uploadaddress}"></div>
	                                <!--NewList_R_main-->
	                                <div class="new-list-r">
	                                    <!--NewList_R_title-->
	                                    <h2 class="h2-font">${item.title }</h2>
	                                    <!--NewList_R_main-->
	                                    <p>
	                                    	<c:if test="${fn:length(item.introduce) >= 107}">
	                                    		${fn:substring(item.introduce,0,107) }...
	                                    	</c:if>
	                                    	<c:if test="${fn:length(item.introduce) < 107}">
	                                    		${item.introduce }
	                                    	</c:if>
										</p>
	                                    <!--NewList_R_tag-->
	                                    <span class="tag"><img src="${basePath }${item.sLogo}"></span>
	                                </div>
	                            </a>
	                        </li>
                    	</c:forEach>
                    	
						 
                    </ul><!--NewList_main_end-->
					<div id="sp1" class="new-list-more" style="display:none">已无更多数据</div>
                </div><!--newlist_end-->
            </div><!--main_news_end-->
			<!--up_slide_start-->
            <div id="up-refresh" class="new-list-more">
                <span class="up-refresh-ico"></span>
                <span class="up-refresh-text" onclick="ajaxChangePage()">向上滑动加载更多数据</span>
            </div><!--up_slide_end-->
            <!--滑动脚本-->
           <form method="post" action="" id="theForm" enctype="multipart/form-data">
           		<input type="hidden" id="prov" name="prov" value="${prov }" />
           		<input type="hidden" id="mobile" name="mobile" value="${mobile }" />
           		<input type="hidden" id="urlParam" name="urlParam" value="${urlParam }" />
           		
				<input type="hidden" id="pageIndex" name="pageIndex" value="2" />
           </form>
            <script type="text/javascript">
            (function() {
                var uprefresh=document.getElementById('up-refresh');
                var downrefresh=document.getElementById('down-refresh');
				var list_main = document.getElementById('list_main');
                var dragger = new DragLoader(document.getElementsByClassName('main')[0], {
                    dragDownThreshold:60,/*向下滑动区域*/
                    dragUpThreshold:20,/*向上滑动区域*/
                    dragDownRegionCls: 'DownRefresh',/*向下滑动样式*/
                    dragUpRegionCls: 'UpRefresh',/*向上滑动样式*/
					disableDragDown: true,
                    /*向下滑动时的状态显示*/
                    dragDownHelper: function(status) {
                        if (status == 'default') {
                            return '<div> <span class="down-refresh-ico"></span>向下滑动加载更多数据</div>';
                        } else if (status == 'prepare') {
                            return '<div> <span class="down-refresh-ico flip"></span>松开加载更多数据</div>';
                        } else if (status == 'load') {
                            return '<div> <span class="loading-img"></span>正在加载中,请稍后...</div>';
                        }
                    },
                    /*[主要code]向上滑动时的状态显示*/
                    dragUpHelper: function(status) {
                        uprefresh.querySelector('.up-refresh-ico').style.display='none';
                        if (status == 'default') {
                            uprefresh.querySelector('.up-refresh-text').innerHTML = '<span class="up-refresh-ico"></span>向上滑动加载更多数据';
                            return '';
                        } else if (status == 'prepare') {
                            uprefresh.querySelector('.up-refresh-text').innerHTML = '<span class="up-refresh-ico"></span>松开加载更多数据';
                            return '';
                        } else if (status == 'load') {
                            uprefresh.querySelector('.up-refresh-text').innerHTML = '<span class="loading-img"></span>正在加载中,请稍后...';
                            return '';
                        }
                    }
                });
                dragger.on('dragDownLoad', function() {
					
                    setTimeout(function() {
                        /*备注:此处放置数据刷新的脚本,主要是新闻列表页的 li */
                        // 无论何时,必须由业务功能主动调用reset()接口,以还原状态
                        // 比如在onDragDownLoad()回调中使用ajax加载数据时,在ajax的回调函数中应当调用reset()重置drag状态
                        // 如果不重置,drag操作将失效
                        dragger.reset();
						//alert('down刷新');
                    }, 500);
                });
                dragger.on('dragUpLoad', function() {
					
                    /*备注:此处放置数据刷新的脚本,主要是新闻列表页的 li */
                    setTimeout(function() {
						
						
                        dragger.reset();
						ajaxChangePage();
						
                    }, 500);

					//list_main.innerHTML('asdasdasdasd');
					//alert('up刷新');
					
                });
            })();

			function ajaxChangePage(){
            	var prov = $("#prov").val();
            	var pageIndex = $("#pageIndex").val();//下一页就是第二页
				//alert('当前pageindex:'+pageIndex);
				var ip = '<%=Global.getProperty("tianyiClub_ip") %>';
				//alert(ip);
				$.ajax({
					data:$("#theForm").serialize(),   
					url: ip + "/tianyiClub/changePage.jspx",
					type: 'POST',
					dataType: 'JSON',
					timeout: 5000,
					error: function() { alert('翻页失败!'); },
					success: function(msg) {
						//记下当前是第几页了
						$("#pageIndex").attr("value",(pageIndex-0+1));//很奇怪,直接+1居然变成11;
						//alert("翻页后pageIndex"+$("#pageIndex").val());
						
						//alert(eval(msg));
						if(null == eval(msg)){
							$("#up-refresh").attr("style","display:none");

							$("#sp1").attr("style","display:block");
							setTimeout(function() {
								$("#sp1").attr("style","display:none");
							}, 1000);

							return;
						}
						$.each(eval(msg), function(i, item) {
							//alert(item.URL);
							var msg = "<li><a href='"+item.url+"'><div class='new-list-l'><img src='${basepath }"+item.uploadaddress+"'></div><div class='new-list-r'><h2 class='h2-font'>"+item.title+"</h2><p>"+substrStr(item.introduce)+"</p><span class='tag'><img src='"+item.sLogo+"' /></span></div></a></li>";
							$("#list_main").append(msg);
	                    }); 
					}
				});            
            }
            
            function substrStr(Str){
            	var   i,len,code;   
				if(Str==null || Str == "")   return   0;   
				len   =   Str.length;   
				for   (i   =   0;i   <   Str.length;i++)     
				{     
					code   =   Str.charCodeAt(i);   
					if   (code   >   255) {len ++;}   
				} 
				
				if(len >=107){
					return Str.substr(0,107)+"...";
				}else{
					return Str;
				} 
            }
            
        </script>
		<!--<input type="button" value="我来触发ajax" onclick="ajaxChangePage()" /> 
    --></div><!--main_end-->
</div><!--page_end-->
</body>
</html>

特别说明:

将ajax获取到的数据填充到dragger中,即可模拟!

需要的js:https://github.com/maxzhang/dragloader/blob/master/dragloader.js

参考地址:maxzhang/dragloader

dragloader.js是一个面向移动Web开发的JavaScript库,帮助开发者在使用页面原生滚动时,模拟上/下拉手势,实现Pull to Request操作。

抱歉!评论已关闭.