2016-08-09 1 views
2

Je rencontre un problème avec mon application de page unique où les utilisateurs n'ont pas la dernière version parce qu'ils n'ont jamais besoin de recharger la page. Est-il possible que je puisse obtenir la date de chargement de la page via javascript? Je peux stocker la date à laquelle j'ai mis à jour le code dans la base de données, puis vérifier périodiquement cette date pour voir si l'utilisateur doit actualiser. J'ai juste besoin d'une date pour le comparer. Je pensais que je pourrais utiliser localStorage et juste mettre un timestamp quand la page se charge, mais s'il y a plusieurs onglets ouverts cela créerait un problème. Aussi, je rencontre le même problème si je tente de le stocker sur la base de données sur le serveur. Ce que je cherche à réaliser est quelque chose de similaire au message "Il y a une nouvelle version disponible, s'il vous plaît actualiser" de google inbox que je vois au bas de cette page de temps en temps.Javascript obtenant la date que la page a chargé

Des idées?

+0

Je pense que vous ne voulez pas utiliser l'heure de l'utilisateur, car elle peut être différente de celle du serveur. Pourquoi ne pas enregistrer les données dans la session? De cette façon, ce sera l'heure du serveur, et unique par session (ce qui signifie qu'un nouvel onglet n'interférera pas non plus). –

Répondre

2

Idéalement, vous devez avoir accès aux en-têtes de réponse. Mais je ne crois pas que tu puisses faire ça. Que faire si vous faites quelque chose de plus simple. Vous n'avez pas besoin de jouer avec localStorage ou des cookies. Juste avoir une variable qui est définie à new Date() lorsque la page est chargée. Quelque chose comme

<html> 
... 
<script> 
    var pageLoadedOn = new Date() 
</script> 
</html> 

Et puis, plus tard vous pouvez vérifier pageLoadedOn qui devrait être égal à quand la page a été rendue. Cela devrait également fonctionner à travers les onglets car chaque page est rendue séparément par onglet.

1

La vérification des horodatages peut être une mauvaise idée, en fonction de votre environnement de travail. Si vos utilisateurs ont un périphérique qui n'a pas de RTC (pensez: framboise pi), vous risquez d'être malchanceux et il se peut que leur horloge système soit complètement erronée (par heures, jours ou même années) lorsqu'ils ouvrent votre page Web. Vous obtiendrez de faux positifs de cette façon. Par exemple, si leur horloge est très loin dans le passé, ils seront invités à recharger, malgré la dernière version. C'est un cas extrême, bien sûr.

Si vous avez juste besoin de savoir si la version est obsolète, et vous allez interroger le serveur de toute façon, pourquoi ne pas simplement mettre une version quelque part dans votre javascript?

var VERSION="1.0.1"; // gobablly accessible variable 

Ou dans le html lui-même, puis récupérez-le avec javascript?

<body class="something" data-version="1.0.1"> 

Si vous ne notation pas comme nombres et points, un simple entier suffit:

var VERSION=7; // version 7. Increment for each new release. 

Ou encore l'horodatage de sortie:

var VERSION=1470786198; 

Puis, quand vous périodiquement demandez au serveur quelle est la version la plus récente, vous comparez avec ce que vous avez. Si votre version est différente, vous invitez l'utilisateur à recharger la page.