2016-12-29 27 views
1

在我的Angularjs應用程序中,我有一個侷限性,即如果用戶手動更改他的系統日期,則應用程序將開始使用該日期執行所有UI操作。在AngularJS中檢測並驗證客戶端日期更改

我想檢測用戶是否已經手動將他的系統日期更改爲某個較早的日期,並將其與存儲在我的Cookie中的服務器日期進行比較並將其發給錯誤。 我嘗試使用:

$window.addEventListener('timeupdate', function() { 
    alert('I changed'); 
}); 

但這並沒有奏效。 Angular有沒有辦法做到這一點。

+1

檢查此:http://stackoverflow.com/questions/3367505/detecting-changes-to-system-time-in-javascript – superUser

回答

0

您可以使用jQuery來觸發timeupdate事件。

$('#testvid').on('timeupdate', function(){ 
    console.log('the time was updated to: ' + this.currentTime); 
}); 

這裏#testvid是html元素的id。

+0

timeupdate是我在這裏找到的事件[鏈接](https://開發人員。 mozilla.org/en-US/docs/Web/Events/timeupdate) –

0

正如我的評論所述,您可以使用setInterval來檢查日期更改在特定的時間間隔。它可以在如下所示的Angular中完成:

var app = angular.module('dateChecker', []); 

app.controller('MainCtrl', function($scope, $interval) { 

    function getTodaysDate(){ 
    var today = new Date(); 
    var dd = today.getDate(); 
    var mm = today.getMonth()+1; //January is 0! 
    var yyyy = today.getFullYear(); 

    if(dd<10) { 
     dd='0'+dd 
    } 

    if(mm<10) { 
     mm='0'+mm 
    } 

    today = mm+'/'+dd+'/'+yyyy; 
    return today; 
    } 

    $scope.oldDate = getTodaysDate(); 

    $interval(function dateChecker() { 
    if($scope.oldDate === getTodaysDate()){ 
     console.log('No change'); 
    } else { 
     console.log('date changed'); 
    } 
    }, 1000); 
}); 

這會檢查每秒的時間並相應地更新。 我只在上面檢查date忽略時間,您可以根據需要更改條件。