回答:
ここに私がそれを得ることができる最短のものがあります:
<script>document.write(new Date().getFullYear())</script>
それは私が遭遇したすべてのブラウザで動作します。
私がそこに着いた方法:
getFullYear
に、新しく作成したを直接呼び出すだけDate
です。new Date().getFullYear()
少し奇妙に見えるかもしれませんが、それは信頼できます:new Date()
パートが最初に行われ、次に.getFullYear()
。type
JavaScriptがデフォルトであるため、をドロップできます。これはHTML5仕様の一部としても文書化されており、この場合はブラウザがすでに行っていることを記述している可能性があります。これは、JavaScriptが有効になっているブラウザーでのみ機能することに注意してください。理想的には、これはsed
1年に1回、オフラインバッチジョブ(* nixのスクリプトなど)として処理する方が適切ですが、JavaScriptソリューションが必要な場合は、これで十分だと思います。(今、私は行って、運命を誘惑しました。)
document.write
最初の解析段階でインラインコンテンツにのみ使用できます(上記のように、<script>...</script>
タグ内、またはタグなしで.js
ロードされたファイル内で、またはなし)。ページが完全に解析されると、ドキュメントストリームは閉じられ、使用するとページが再度開かれます。つまり、ドキュメントを新しいドキュメントで完全に置き換えます。メインの解析が完了してから1年を追加する場合は、DOMを使用します。(これは変更ではなく、常にこの方法で行われています。)script
defer
async
document.write
TJの答えはすばらしいですが、HTMLが既にレンダリングされていて、document.writeスクリプトがすべてのページコンテンツを日付の年だけで上書きするというシナリオに遭遇しました。
このシナリオでは、次のコードを使用して既存の要素にテキストノードを追加できます。
<div>
©
<span id="copyright">
<script>document.getElementById('copyright').appendChild(document.createTextNode(new Date().getFullYear()))</script>
</span>
Company Name
</div>
createTextNode()
<br>
HTMLでノードを作成する方法のようにhtmlを解釈しませんか?
将来の時間枠を含め、現在の年(2017など)を開始年として、来年が「©2017-2018、Company。」のように表示されるようにするには、次のコードを使用します。 。毎年自動的に更新されます:
© Copyright 2017<script>new Date().getFullYear()>2017&&document.write("-"+new Date().getFullYear());</script>, Company.
©Copyright 2017-2018、Company。
しかし、最初の1年がすでに経過している場合、最短のコードは次のように書くことができます。
© Copyright 2010-<script>document.write(new Date().getFullYear())</script>, Company.
JSソリューションは適切に機能しますが、サーバー側のソリューションをお勧めします。チェックした一部のサイトでは、このページ全体が空白になり、たまに見られるのは1年だけでした。
この理由は、document.writeが実際にドキュメント全体を上書きしたためです。
私は友人にサーバー側のソリューションを実装するように頼みました、そしてそれは彼のために働きました。PHPの単純なコード
<?php echo date('Y'); ?>
楽しい!
document.write
DOMが既に読み込まれた後に使用されたことを意味します。解決策はdocument.write
、すべてのDOMの読み込み後に使用しないか、さらにはまったく使用document.write
しないことです。
これは、ADとBCの両方で機能する、最も短い、最も責任のあるバージョンです。
[ドラムロール...]
<script>document.write(Date().split` `[3])</script>
それでおしまい。受け入れられた回答より6バイト短い。
ES5互換である必要がある場合は、次の方法で解決できます。
<script>document.write(Date().split(' ')[3])</script>
これは、純粋な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();
}
})();
});
<div>©<script>document.write(new Date().getFullYear());</script>, Company.
</div>
クローム監査によると
低速接続のユーザーの場合、動的に挿入された外部スクリプト
document.write()
により、ページの読み込みが数十秒遅れることがあります。https://web.dev/no-document-write/?utm_source=lighthouse&utm_medium=devtools
エラーのないソリューションは次のとおりです。
(new Date).getFullYear();