在给定时间自动加载新的HTML页面

时间:2016-09-11 07:06:20

标签: javascript

我希望我的主页在特定时间(下午1点)每天更换一次。

该页面有一个24小时倒数计时器,当它达到零时,我想要一个新页面加载,计时器再次启动。

我了解如何在特定时间后刷新页面

<script>
    setTimeout(function(){
       window.location='Page2.html';
    }, 5000);
</script>

但不是如何在一天的特定时间(下午1点)实现这一目标。

5 个答案:

答案 0 :(得分:5)

您可以尝试使用获取页面加载/刷新的当前时间。然后计算毫秒直到下午1点。并使用它来设置setTimeout。我建议使用像moment这样的库来进行时间计算。

在html中加载片刻:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment.min.js"></script>

在JS中:

// time right now
var now = moment.now();
// set refresh hour to 1pm
var nextRefresh = moment.now().hour(13).minute(0).second(0).millisecond(0);

// check if is or after 1pm
if (now.hour >= 13) {
  nextRefresh.add(1, 'days'); // add 1 day
}

setTimeout(function() {
  console.log('next 1pm');
}, nextRefresh.diff(now));

@Stoycho Trenchev是对的。您可能希望在setInterval中使用86400000毫秒来调用setTimeout。这样,您的页面每天都会刷新。

答案 1 :(得分:2)

你需要setInterval而不是setTimeout,你需要以毫秒为单位计算24h:)

答案 2 :(得分:2)

这里你只是一个fyi JavaScript使用浏览器的时间,所以只是因为它在下午1点你不会在下午1点用户所在。

var intervalId = window.setInterval(checkTime, 500);

function checkTime() {

    var d = new Date();
    var h = d.getHours();
    var m = d.getMinutes();
    var s = d.getSeconds();

    if(h == 13 && m == 0 && s == 0) return window.location='Page2.html';
}

答案 3 :(得分:1)

阿。有点像?

<script>
    function getTime() {
        var date    = new Date()
        var time    = date.getTime();
        var hours   = time.getHours();
        var minutes = time.getMinutes();
        var seconds = time.getSeconds();

        var time    = {'hours': hours, 'minutes': minutes, 'seconds': seconds};
    }

    setInterval(function() {
        var time    = getTime();

        if (time.hours === 13 && time.minutes === 0) {
             window.location = 'Page2.html';
        }
    }, 500);
</script>

答案 4 :(得分:1)

你需要setTimeout设置一个计时器和Date来计算计时器在触发之前需要多长时间。

var now = new Date();
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0, 0) - now;
if (millisTill10 < 0) {
     millisTill10 += 86400000; // it's after 10am, try 10am tomorrow.
}
setTimeout(function(){alert("It's 10am!")}, millisTill10);