Oto najkrótsza możliwa do uzyskania:
<script>document.write(new Date().getFullYear())</script>
To zadziała we wszystkich przeglądarkach, z którymi się zetknąłem.
Jak się tam dostałem:
- Możesz po prostu zadzwonić
getFullYear
bezpośrednio do nowo utworzonego Date
, bez potrzeby wprowadzania zmiennej. new Date().getFullYear()
może wyglądać nieco dziwnie, ale jest wiarygodny: new Date()
część jest wykonywana najpierw, a następnie .getFullYear()
.
- Możesz upuścić
type
, ponieważ JavaScript jest domyślny; jest to nawet udokumentowane jako część specyfikacji HTML5 , która prawdopodobnie w tym przypadku zapisuje to, co przeglądarki już robią.
- Możesz upuścić średnik na końcu dla jednego dodatkowego zapisanego znaku, ponieważ JavaScript ma „automatyczne wstawianie średnika”, cechę, której zwykle nie znoszę i której się przeciwstawiam, ale w tym konkretnym przypadku powinien być wystarczająco bezpieczny.
Należy pamiętać, że działa to tylko w przeglądarkach z włączoną obsługą JavaScript. Najlepiej byłoby, gdyby sed
raz w roku lepiej było to traktować jako zadanie wsadowe offline ( skrypt na * nix itp.), Ale jeśli potrzebujesz rozwiązania JavaScript, myślę, że jest tak krótki, jak to możliwe. (Teraz odszedłem i kusiłem los.)
document.write
dla treści wstawianych podczas początkowej fazy analizy (jak pokazano powyżej, w<script>...</script>
znaczniku - lub w.js
pliku załadowanymscript
znacznikiem bezdefer
lubasync
). Kiedy strona jest w pełni parsowana, strumień dokumentów jest zamykany, a użyciedocument.write
go ponownie otwiera - całkowicie zastępując dokument nowym. Jeśli chcesz dodać rok po zakończeniu głównej analizy, chcesz użyć DOM. (To nie jest zmiana, zawsze tak było.)Odpowiedź TJ jest doskonała, ale wpadłem na jeden scenariusz, w którym mój kod HTML został już zrenderowany, a skrypt document.write zastąpiłby całą zawartość strony tylko datą roku.
W tym scenariuszu możesz dołączyć węzeł tekstowy do istniejącego elementu, używając następującego kodu:
źródło
createTextNode()
nie interpretuje html jak na przykład<br>
jak utworzyć węzeł za pomocą HTML?Jeśli chcesz uwzględnić ramy czasowe w przyszłości, z bieżącym rokiem (np. 2017) jako rokiem początkowym, aby w przyszłym roku wyglądało to tak: „© 2017-2018, Company.”, Użyj następującego kodu . Będzie się automatycznie aktualizować co roku:
© Copyright 2017-2018, Firma.
Ale jeśli minął już pierwszy rok, najkrótszy kod można zapisać w następujący sposób:
źródło
źródło
Rozwiązanie JS działa świetnie, ale doradziłbym rozwiązanie po stronie serwera. W niektórych witrynach, które sprawdziłem, problem z całą stroną był pusty, a od czasu do czasu pojawiał się tylko rok.
Powodem tego był document.write, który faktycznie napisał cały dokument.
Poprosiłem mojego przyjaciela o wdrożenie rozwiązania po stronie serwera i to zadziałało dla niego. Prosty kod w php
Cieszyć się!
źródło
document.write
została użyta po załadowaniu DOM. Rozwiązaniem jest nieużywaniedocument.write
po wszystkich ładowaniach DOM, a nawet, w ogóle, nieużywaniedocument.write
.Oto najkrótsza, najbardziej odpowiedzialna wersja, która działa nawet w trybie AD i BC.
[rolki bębna ...]
Otóż to. 6 bajtów krótszych niż zaakceptowana odpowiedź.
Jeśli potrzebujesz zgodności z ES5, możesz zadowolić się:
źródło
To najlepsze rozwiązanie, jakie mogę wymyślić, będzie działać z czystym JavaScript. Będziesz także mógł stylizować element, ponieważ może być celem CSS. Wystarczy dodać w miejsce roku, a zostanie on automatycznie zaktualizowany.
źródło
źródło
W przypadku React.js w stopce zadziałało:
źródło
według audytu chrome
więc rozwiązaniem bez błędów jest:
źródło