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

Reload page 2 times with ajax / javascript and setTimeout

本文关键字:加载 2次 新加载 ajax javascript setTimeout 使用      更新时间:2024-01-17

老实说,我必须承认我不擅长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>

我遇到的问题是,它忽略了第二个,一直在循环。我知道有一个简单的解决办法。

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

这里有一个简单的工作解决方案,接近您正在寻找的解决方案,它使用localStorage(旧浏览器不支持localStoragehttp://caniuse.com/#feat=namevalue-存储)

<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>

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