2016-06-14 69 views
0

我有一個倒計時的頂欄。它在Chrome和Firefox上運行良好,但我意識到它似乎不適用於Safari。 這是代碼:時間倒計時在Chrome中工作,但不是Safari瀏覽器

<div class="deadline_Container"> 
    <div id="clockdiv"> 
    <span class="deadline_Text">You only have </span> 
    <div><span class="days"></span><span class="smalltext">Days</span></div> 
    <div><span class="hours"></span><span class="smalltext">Hours</span></div> 
    <div><span class="minutes"></span><span class="smalltext">Minutes</span> 
</div> 
<div class="clockLast"><span class="seconds"></span><span class="smalltext">Seconds</span></div> 
<span class="deadline_Text2">left to get free delivery!</span></div> 
</div> 

<script type="text/javascript"> 
var deadline = 'Jun 15 2016 23:59:59 GMT'; 
function time_remaining(endtime){ 
    var t = Date.parse(endtime) - Date.parse(new Date()); 
    var seconds = Math.floor((t/1000) % 60); 
    var minutes = Math.floor((t/1000/60) % 60); 
    var hours = Math.floor((t/(1000*60*60)) % 24); 
    var days = Math.floor(t/(1000*60*60*24)); 
return {'total':t, 'days':days, 'hours':hours, 'minutes':minutes, 'seconds':seconds}; 
} 

function run_clock(id,endtime) { 
    var clock = document.getElementById(id); 
    var days_span = clock.querySelector('.days'); 
    var hours_span = clock.querySelector('.hours'); 
    var minutes_span = clock.querySelector('.minutes'); 
    var seconds_span = clock.querySelector('.seconds'); 

    function update_clock(){ 
    var t = time_remaining(endtime); 
    days_span.innerHTML = t.days; 
    hours_span.innerHTML = ('0' + t.hours).slice(-2); 
    minutes_span.innerHTML = ('0' + t.minutes).slice(-2); 
    seconds_span.innerHTML = ('0' + t.seconds).slice(-2); 
    if(t.total<=0) { 
     clearInterval(timeinterval); 
    } 
    } 

    update_clock(); 
    var timeinterval = setInterval(update_clock,1000); 
} 

run_clock('clockdiv',deadline); 
</script> 

現在上的天數,小時,分鐘野生動物園insteadt等離開時說:「男」「一」「一個」。所以我認爲這與時間格式有關?

我試過設置的時候是這樣的:

var deadline = '2016-06-15T23:59:59 GMT +0100'; 

但這並沒有工作。有任何想法嗎?

回答

0

您的根本問題是使用Date構造函數解析字符串。不要那樣做,永遠。使用Date構造函數解析字符串(或Date.parse,它們相當於解析)強烈建議禁用,因爲它在很大程度上取決於實現。

因此,您會在不同的瀏覽器中看到不同的結果。變化:

var deadline = 'Jun 15 2016 23:59:59 GMT'; 

var deadline = new Date(Date.UTC(2016, 5, 15, 23, 59, 59)); 

而且

var t = Date.parse(endtime) - Date.parse(new Date()); 

var t = endtime - new Date(); 

注意Date.parse(new Date())將創建一個新的日期,使用實施其轉換爲字符串依賴Date.prototype.toString,解析回一個日期,然後得到的時間價值。

相關問題