Мне нужно обновить несколько сотен статических HTML-страниц, в заголовке которых прописана дата авторского права. Я хочу заменить его на JavaScript, который будет автоматически обновляться каждый год.
В настоящее время я использую:
<script type="text/javascript">var year = new Date();document.write(year.getFullYear());</script>
Это так коротко, как только можно?
Ответ 1
Здесь самое короткое, что я могу получить:
<script>document.write(new Date().getFullYear())</script>
Это будет работать во всех браузерах, с которыми я столкнулся.
Как я туда попал:
- Вы можете просто вызвать
getFullYear
непосредственно на вновь созданный Date
, без необходимости в переменной. new Date().getFullYear()
может выглядеть немного странно, но он надежен: сначала выполняется часть new Date()
, затем .getFullYear()
.
- Вы можете отказаться от
type
, потому что JavaScript по умолчанию; это даже документировано как часть спецификация HTML5, которая, вероятно, в этом случае будет писать то, что уже делают браузеры.
- Вы можете оставить точку с запятой в конце для одного дополнительного сохраненного символа, потому что у JavaScript есть "автоматическая точка с запятой", функция, которую я обычно презираю и рельсу, но в этом конкретном случае использования она должна быть достаточно безопасной.
Важно отметить, что это работает только в браузерах, где включен JavaScript. В идеале, это будет лучше обрабатываться как автономное пакетное задание (sed
script on * nix и т.д.) Один раз в год, но если вы хотите использовать решение JavaScript, я думаю, что это будет как можно короче. (Теперь я ушел и искушал судьбу.)
Ответ 2
Ответ TJ превосходный, но я столкнулся с одним сценарием, где мой HTML уже был обработан, а document.write script будет перезаписывать все содержимое страницы только с датой.
Для этого сценария вы можете добавить текст node к существующему элементу, используя следующий код:
<div>
©
<span id="copyright">
<script>document.getElementById('copyright').appendChild(document.createTextNode(new Date().getFullYear()))</script>
</span>
Company Name
</div>
Ответ 3
Если вы хотите включить временные рамки в будущем, то в текущем году (например, 2017) в качестве начального года, чтобы следующий год был следующим: "© 2017-2018, Компания.", затем используйте следующие код. Itll автоматически обновляется каждый год:
© Copyright 2017<script>new Date().getFullYear()>2017&&document.write("-"+new Date().getFullYear());</script>, Company.
© Copyright 2017-2018, Company.
Но если первый год уже прошел, кратчайший код можно записать следующим образом:
© Copyright 2010-<script>document.write(new Date().getFullYear())</script>, Company.
Ответ 4
<script type="text/javascript">document.write(new Date().getFullYear());</script>
Ответ 5
Решение JS отлично работает, но я бы посоветовал серверное решение. На некоторых сайтах, которые я проверил, эта проблема оставалась пустой, и только год был замечен время от времени.
Причиной этого было то, что document.write фактически написал весь документ.
Я попросил моего друга реализовать решение на стороне сервера, и это сработало для него.
Простой код в php
<?php echo date('Y'); ?>
Наслаждайтесь!
Ответ 6
Здесь самая короткая и ответственная версия, которая работает как в AD, так и в BC.
[барабанные дроби...]
<script>document.write(Date().split' '[3])</script>
Это. 6 байт короче принятого ответа.
Если вам нужно быть совместимым с ES5, вы можете согласиться на:
<script>document.write(Date().split(' ')[3])</script>
Ответ 7
Это лучшее решение, которое я могу придумать, которое будет работать с чистым JavaScript. Вы также сможете стилизовать элемент, так как он может быть нацелен на CSS. Просто добавьте вместо года, и он будет автоматически обновляться.
//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();
}
})();
});
Ответ 8
разметка
<footer>
© <span id="year">2019</span>
</footer>
JavaScript
<script>
document.getElementById("year").innerHTML = new Date().getFullYear();