无论页面刷新如何,都会持续计数
我有这个jQuery,目前每5秒增加一个数字。 我遇到的问题是它的客户端,因此每次刷新页面时它都会重置。
相反,我希望计数器能够继续,即使您不在网站上,也不管刷新页面多少次,这就是为什么我认为像PHP这样的服务器端脚本更适合我的用例。 如果没有,请另行建议。
我已经设置了一个工作小提琴我目前有jQuery: http : //jsfiddle.net/f354bzy5/
什么是PHP来重新创建包含上述要求的影响?
这是我正在使用的Jquery:
//Counter var counter = 22000000000; $(".count").html(counter); setInterval(function () { $(".count").html(counter); ++counter; }, 5000);
检查这个演示
//Counter var counter=22000000000; if(typeof(localStorage.getItem('counts'))!='object') { counter=parseInt(localStorage.getItem('counts')); } setInterval(function () { $(".count").html(counter); ++counter; localStorage.setItem('counts',counter); }, 1000);
突出显示localStorage
localStorage
是存储接口的实现。 它存储的数据no expiration date
,只能通过JavaScript
清除,或清除Browser Cache
/Locally Stored Data
– 与cookie过期不同。
你能把计数器存放在cookie里吗?
document.cookie = counter.
因此,如果用户刷新页面,您可以从cookie获取最后一个值。
它归结为两个简单的选择。 只需选择最适合您需求的产品:
选择Cookie :如果您希望服务器端访问计数器。 请记住,默认情况下会将Cookie与请求一起发送。
选择本地存储 :如果您不想每次都发送计数器以及请求,那么您应该选择本地存储。
你可以用localStorage
做到这一点。 这是我如何做到这一点。 你可以根据需要调整它。
//detecting support for localStorage. if (window.localStorage) { //counterValue already exists in localStorage? Let's use that or set to zero. var counterValue = localStorage.counterValue || 0; setInterval(function() { //increment the counter and store updated vale in localStorage as well. localStorage.counterValue = ++counterValue; //put it in your HTML if you might $(".count").html(counterValue); }, 5000); }
如何将localStorage
与一些实用function一起使用? 请记住,这是一个客户端解决方案,当用户删除浏览器缓存/本地数据等时,该item
将被删除。
function isLocalStorage() { try { return 'localStorage' in window && window['localStorage'] !== null; } catch(e) { return false; } } function setCounter(key, val) { localStorage.setItem(key, val); } function getCounter(key) { return parseInt(localStorage.getItem(key), 10); } (function() { var key = "myCounter"; var counter = isLocalStorage() && getCounter(key) || 1; var $placeholder = $(".count"); $placeholder.html(counter); setInterval(function () { counter++; $placeholder.html(counter); isLocalStorage() && setCounter(key, counter); }, 2000); }());
– 演示 –