使用ajax / javascript和setTimeout重新加载页面2次

时间:2013-12-01 17:01:06

标签: javascript jquery ajax

老实说,我必须承认我对Ajax,Java脚本或CSS并不擅长。请放轻松我需要帮助。我使用的是我用Jquery mobile包装的CMS,不能使用元刷新方法。如何使用以下代码在指定时间仅重新加载页面2次。

<script type="text/javascript">

$(document).ready(function(){
setTimeout(function(){
    window.location.reload();
}, 2000);
});

$(document).ready(function(){
setTimeout(function(){
    window.location.reload();
}, 15000);
});
</script>

我遇到的问题是它忽略了第二个并继续循环。我知道有一个简单的解决方案。

1 个答案:

答案 0 :(得分:0)

您需要持久性来克服循环问题。 这是因为每次重新加载页面时,都会评估其中的javascript。 您的页面应该“记住”它已被重新加载。 ...怎么样? 有很多方法。您可以向查询字符串添加参数,或将此数据保存在cookie或本地存储中。您可以跟踪服务器端的重新加载。 每种方法都有自己的优点和缺点。

这是一个简单的工作解决方案,靠近您正在寻找的解决方案,使用localStorage(旧浏览器不支持localStorage http://caniuse.com/#feat=namevalue-storage

<script type="text/javascript">
    ;(function () {
        var reloads = [2000, 13000],
            storageKey = 'reloadIndex',
            reloadIndex = parseInt(localStorage.getItem(storageKey), 10) || 0;

        if (reloadIndex >= reloads.length || isNaN(reloadIndex)) {
            localStorage.removeItem(storageKey);
            return;
        }

        setTimeout(function(){
            window.location.reload();
        }, reloads[reloadIndex]);

        localStorage.setItem(storageKey, parseInt(reloadIndex, 10) + 1);
    }());
</script>

如您所见,我使用的数组包含某种时间轴。为简单起见,数组的每个元素都包含自上次重新加载以来更改页面之前要等待的毫秒数。