Je dois mettre à jour quelques centaines de pages HTML statiques dont la date de copyright est codée en dur dans le pied de page. Je veux le remplacer par du JavaScript qui sera automatiquement mis à jour chaque année.
J'utilise actuellement:
<script type="text/javascript">var year = new Date();document.write(year.getFullYear());</script>
Est-ce aussi court que possible?
Voici le plus court je peux l'obtenir:
<script>document.write(new Date().getFullYear())</script>
Cela fonctionnera dans tous les navigateurs que j'ai rencontrés.
Comment je suis arrivé là:
getFullYear
directement sur le Date
nouvellement créé, sans avoir besoin d'une variable. new Date().getFullYear()
peut sembler un peu étrange, mais c'est fiable: la partie new Date()
est faite en premier, puis le .getFullYear()
.type
, car JavaScript est la valeur par défaut. cela est même documenté dans le cadre de la spécification HTML5 , qui est probablement dans ce cas en train de rédiger ce que les navigateurs font déjà.Il est important de noter que cela ne fonctionne que sur les navigateurs sur lesquels JavaScript est activé. Idéalement, cela serait mieux traité comme un travail par lots hors ligne (sed
script sur * nix, etc.) une fois par an, mais si vous voulez la solution JavaScript, je pense que c'est aussi court que possible. (Maintenant je suis allé et tenté le destin.)
La réponse de TJ est excellente, mais j'ai rencontré un scénario dans lequel mon code HTML avait déjà été rendu et le script document.write écrasait tout le contenu de la page avec uniquement l'année de la date.
Pour ce scénario, vous pouvez ajouter un nœud de texte à l'élément existant à l'aide du code suivant:
<div>
©
<span id="copyright">
<script>document.getElementById('copyright').appendChild(document.createTextNode(new Date().getFullYear()))</script>
</span>
Company Name
</div>
Si vous souhaitez inclure une période dans le futur, avec l'année en cours (par exemple, 2017) comme année de début, l'année suivante apparaîtra ainsi: “© 2017-2018, Société.”, Utilisez le code suivant . Il se mettra automatiquement à jour chaque année:
© Copyright 2017<script>new Date().getFullYear()>2017&&document.write("-"+new Date().getFullYear());</script>, Company.
© Copyright 2017-2018, Company.
Mais si la première année est déjà passée, le code le plus court peut être écrit comme ceci:
© Copyright 2010-<script>document.write(new Date().getFullYear())</script>, Company.
<script type="text/javascript">document.write(new Date().getFullYear());</script>
La solution JS fonctionne très bien, mais je conseillerais une solution côté serveur. Certains des sites que j'ai consultés avaient ce numéro de la page entière en blanc et seulement l'année était vue de temps en temps.
La raison en est la document.write a effectivement écrit sur le document entier.
J'ai demandé à mon ami d'implémenter une solution côté serveur et cela a fonctionné pour lui. Le code simple en php
<?php echo date('Y'); ?>
Prendre plaisir!
Voici la version la plus courte et la plus responsable ultime qui fonctionne même à la fois pour AD et pour la Colombie-Britannique.
[rouleaux de tambour ...]
<script>document.write(Date().split` `[3])</script>
C'est ça. 6 octets plus court que la réponse acceptée.
Si vous devez être compatible ES5, vous pouvez choisir:
<script>document.write(Date().split(' ')[3])</script>
C’est la meilleure solution possible qui fonctionne avec du JavaScript pur. Vous pourrez également styler l'élément car il peut être ciblé en CSS. Il suffit d’ajouter à la place de l’année et celle-ci sera automatiquement mise à jour.
//Wait for everything to load first
window.addEventListener('load', ()=>{
//Wrap code in IIFE
(function (){
//If your page has an element with ID of auto-year-update the element will be populated with the current year.
var date=new Date();
if(document.querySelector("#auto-year-update")!==null){
document.querySelector("#auto-year-update").innerText=date.getFullYear();
}
})();
});