h5页面的下拉分页 解决IOS 13以上 版本不兼容问题

Posted 二小子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了h5页面的下拉分页 解决IOS 13以上 版本不兼容问题相关的知识,希望对你有一定的参考价值。

h5页面中使用上拉分页 可以引入 minirefresh-all.js 第三方插件来完成

// 初始化页码
                var page = 0;

                // miniRefresh 对象
                var miniRefresh = new MiniRefresh({
                    container: ‘#minirefresh‘,
                    down: {
                        isLock: false, //是否禁用下拉刷新
                        callback: function() {
                            doAjax(‘down‘);
                        }
                    },
                    up: {
                        isAuto: true,
                        callback: function() {
                            doAjax(‘up‘);
                        }
                    }
                });

                // 组装 ajax 分页函数。参数 downOrUp 判断是下拉刷新还是上拉加载。
                // 特别提示:若你仅使用下拉刷新或上拉加载的其中一项,可不用组装 ajax 分页函数了,直接将 ajax 分页放在下拉刷新或上拉加载的回调 callback 里。
                var doAjax = function(downOrUp) {
                    if(downOrUp == ‘down‘) {
                        page = 1; // 下拉刷新页码设置
                    } else {
                        page++; // 上拉加载递增页码
                    }

                    $.ajax({
                        url: ‘data/listdata‘ + page + ‘.json‘, // 请求网址
                        type: ‘GET‘,
                        data: { // 请求参数,一般会带上页码
                            ‘page‘: page,
                            ‘t‘: new Date().getTime() // 防止GET请求缓存
                        },
                        success: function(data) {
                             var json = eval("("+data+")");
                             var flag = json.code;
                             var dat = json.data;
                             var msg = json.msg;
                             if(flag == "00"){
                                // 下面这段请根据自己的数据结构来处理
                                    var arrLen = dat.length;
                                    
                                    if(arrLen > 0) {
                                        var html = ‘‘;
                                        
                                            for(var i = 0; i < dat.length; i++){
                                                html += "<div class=‘li></div>" ;
                                            }
                                        setTimeout(function() { // 使用 setTimeout 函数是方便演示的,你可以不用 setTimeout 函数
                                            if(downOrUp == ‘down‘) {
                                                $(‘#listdata‘).html(‘‘);
                                                $(‘#listdata‘).append(html); // DOM 插入数据
                                                if(json.totalPages == page) { // 是否已取完数据页json.totalPages为总页数
                                                    miniRefresh.endDownLoading(true);  // 结束上拉加载
                                                } else {
                                                    miniRefresh.endDownLoading(false);
                                                }
                                                
                                            } else {
                                                $(‘#listdata‘).append(html);
                                                if(json.totalPages == page) { // 是否已取完数据页 json.totalPages为总页数
                                                    miniRefresh.endUpLoading(true); // 结束上拉加载
                                                } else {
                                                    miniRefresh.endUpLoading(false);
                                                }
                                            }
                                        }, 300);
                                    } else {
                                        if(downOrUp == ‘down‘) {
                                            $(‘#listdata‘).html(‘‘);
                                            miniRefresh.endDownLoading(true);
                                        } else {
                                            miniRefresh.endUpLoading(true);
                                        }
                                    }
                             }else{
                                 alert(msg);
                             }
                        },
                        error: function() {
                            if(downOrUp == ‘down‘) {
                                $(‘#listdata‘).html(‘‘);
                                miniRefresh.endDownLoading(true);
                            } else {
                                miniRefresh.endUpLoading(true);
                            };
                        }
                    });
                };

但是最近发现这个插件对ios 13以上的系统支持不是特别友好,所有对插件进行优化

无法修改插件使既使 安卓和IOS 13以下的版本适用同时也让IOS 13以上的版本适用 所以采用一种比较笨的办法解决

<!-- 引入 miniRefresh JS -->
		<script type="text/javascript">
			var str= navigator.userAgent.toLowerCase(); 
		    var ver=str.match(/cpu iphone os (.*?) like mac os/);
		    if(!ver){
		    	document.write("<scr"+"ipt src="js/minirefresh-and-ios12.js"></sc"+"ript>");
		    }else if(ver[1].replace(/_/g,".").substring(0,2) >= 13){
		        //alert("你当前的Ios系统版本为:"+ver[1].replace(/_/g,"."));
		        document.write("<scr"+"ipt src="js/minirefresh-ios13.js"></sc"+"ript>");
		    }else{
		    	document.write("<scr"+"ipt src="js/minirefresh-and-ios12.js"></sc"+"ript>");
		    }
			
		</script>

  优化后的插件 下载地址:

链接: https://pan.baidu.com/s/1nb1Po59qyrqmif4hXymPYw 提取码: kxq1

以上是关于h5页面的下拉分页 解决IOS 13以上 版本不兼容问题的主要内容,如果未能解决你的问题,请参考以下文章

H5 IOS 虚拟键盘不回落的问题

H5页面在IOS上滚动回弹问题

获取定位,苹果IOS10以上不支持h5的geolocation获取不到地理位置信息解决办法

获取定位,苹果IOS10以上不支持h5的geolocation获取不到地理位置信息解决办法

在电脑上调试苹果ios上的h5页面

解决:h5进入页面拉起键盘ios不生效问题