jquery mobile JS与缓存的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery mobile JS与缓存的问题相关的知识,希望对你有一定的参考价值。

我的页面列表显示一些文章,点击更多时通过JS在下面再加一些内容,然后点击其它页面,再点击回来,那个更多按钮就不起作用了,在页面中设置data-ajax="false"这个,就可以了,但每次都得重新加载页面,有没有办法解决下,能让那个页面执行JS又能缓存(点击更多出现的内容也能够缓存)
function mores(more,list_ul,php_url,id)
/* $(more).css(height:"30px","line-height":"30px","text-align":"center",display:"block",margin:"auto","background-color":"#eee");
$(more+" span").css(width:"50px",height:"30px",display:"block",float:"left");
$(more+" .more-b").css( width:"100px", margin:"auto");*/
$(more).on("tap",function()
n=$(list_ul+' li').size();
$.ajax(
type: "post",
url: php_url,
data:"num="+n+"&id="+id,
beforeSend:beforecall,
success:callback

);

先说明两点:
1、jquery mobile默认跳转都是用ajax的方法,这样的做法导致的直接影响就是页面js只能加载一次,用data-ajax后可以使当前页面摆脱ajax,而页面加载默认就是重新加载了。
2、jquery mobile默认在页面刷新或者跳转后,会自动移除缓存

然后说说你的问题,在jquery mobile中倒是有个能够控制缓存的属性:

如果想要的话,你可以使jQuery Mobile在dom中保存之前访问过的页面而不是移除他们。这样用户在回到这个页面的时候就可以迅速加载。

要让所有曾经访问过的pages都缓存,设置domcache选项为true,
html 代码:

$.mobile.page.prototype.options.domCache = true;

或者你可以缓存特定的某个页面,给page容器添加如下属性
<div data-role="page" id="cacheMe" data-dom-cache="true">

当然这个是jquery mobile的处理缓存的方法,不知道能不能解决,如果不能解决说下,我再告诉你其他方法

不明白请追问,如果对你有帮助,记得采纳~追问

data-ajax="false",加入这个之后,在加这个ata-dom-cache="true",好像不起作用了

http://m.hsyc120.com/yczl/kfal/
这是我的网站,我就是想点击下面的更多,能够了缓存,点击其他连接之后回来,刚才点击更多新加的内容还在,要不然这样感觉很慢

追答

你的网站“更多”就是“已到底”,你要缓存什么我看不出来。
你把需要缓存的内容截图下,然后把对应部分的前台页面代码给出来,我帮你看看吧

追问

我要缓存的就是点击更多后出现的内容,点击更多之后再点其它栏目,再点回来,刚才点击更多出现的内容就没有了,又恢复刚到原来的样子了(没有点击更多按钮时)。你要的代码是哪些,js,php

追答

我大概明白你的意思了,之前理解有误,你帖的代码不全,我也看不很明白,不过ata-dom-cache="true",确实不管用,因为你是要把展开操作暂时保存,然后再回来的时候依然显示“展开”的状态吧。这个和常用的缓存没关系了,我推荐的方案是:
方案1、用某个字段来做为标识,然后在点击“更多”的时候改变状态,(按道理你应该有个可以收起的按钮)在点击一次的时候将状态再重置回来。
方案2、你的页面“更多”按钮应该有某个操作,从你代码来看(如果你贴的没错的话)应该是用AJAX在后台获取所有数据,然后在前台显示。你可以在后台把你获取的那个要传会前台的数据暂时保存到session里面。

不过一般情况下,刷新页面或者类似的重新载入当前页面的时候,“更多”都不是展开状态的,我建议你确认下需求去

参考技术A jqm 默认对所以的A链接ajax方式缓存,这样可以用更多的转场等效果,否则无缓存。追答

每次都加载页面的好处是可以随时刷新。

jquery mobile 如何获取触摸的坐标

我自己用JS写的方法总会有点小问题,可能会遇到定位不够准确或其他问题

所以想了解下jquery mobile中有没有封装好的 在发生触摸事件时获取触摸坐标 的方法?

jquery mobile中获取触摸坐标的方法:

思路:利用jquery.mobile.js(下载)获取GPS设备的经纬度信息,然后显示输出在sogou地图上。 

1.加载jquery.min.js
2.加载jquery.mobile.min.js
3.var gps = navigator.geolocation;调用GPS
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>手机GPS定位获取</title>
        <script type="text/javascript" src="jquery.min.js"></script>
        <script type="text/javascript" src="jquery.mobile.min.js"></script>
        <script type="text/javascript" src="http://api.go2map.com/maps/js/api_v2.5.1.js"></script>
        <script type="text/javascript">
            function initialize(GX,GY) 
             
                var map = new sogou.maps.Map(document.getElementById("map_canvas"), 
                    zoom: 15, //放大级别
                    center: new sogou.maps.LatLng(GX,GY),//设置中心点
                    mapTypeId: sogou.maps.MapTypeId.ROADMAP
                );
                 
                var myLatlng = new sogou.maps.LatLng(GX,GY);
                var marker1=new sogou.maps.Marker(
                    position: myLatlng, 
                    map: map,
                    title:"经纬度坐标:"+myLatlng,
                    label:visible:true,align:"TOP"
                );
            
             
            function startgps()
                var gps = navigator.geolocation;
                if (gps)
                    gps.getCurrentPosition(showgps,
                        function(error)
                            alert("Got an error, code: " + error.code + " message: "+ error.message);
                        ,maximumAge: 10000//超时为10000毫秒
                    ); 
                else
                    showgps();
                
            
                  
            function showgps(position)
                if (position)       
                    var latitude = position.coords.latitude;
                    var longitude = position.coords.longitude;
                    initialize(latitude,longitude);//调用Sogou地图显示坐标
                else
                    alert("position is null");
                
            
             
        </script>
        <style type="text/css">  
            bodyheight:100%;margin:0px;padding:0px
            #map_canvasheight:100%;height:500px;
        </style>  
    </head>
 
    <body onload="startgps();">
        <div id="map_canvas"></div>
    </body>
</html>
参考技术A 会有一个相应的鼠标事件,这个 MouseEvent 中会有当时的像素坐标的。 参考技术B function(event)

var touch = event.touches[0];
touch.pageX;//触摸的x坐标点
touch.pageY;//触摸的Y坐标点

以上是关于jquery mobile JS与缓存的问题的主要内容,如果未能解决你的问题,请参考以下文章

预取和缓存动态创建的 jquery Mobile+PhoneGap 页面

如何在 jQuery Mobile UI 中禁用缓存

从函数外部调用时函数不返回值?

Jquery Mobile做的小案例,为啥在手机上运行速度很慢

更新版本后如何避免客户端js和css缓存

定义没有定义jquery.mobile.custom.js?