Answers:
这是我能得到的最短的:
<script>document.write(new Date().getFullYear())</script>
这将适用于我所运行的所有浏览器。
我如何到达那里:
getFullYear
新创建的Date
,而无需变量。new Date().getFullYear()
可能看起来有些奇怪,但这是可靠的:new Date()
首先完成零件,然后.getFullYear()
。type
,因为JavaScript是默认设置。这甚至被记录为HTML5规范的一部分,在这种情况下,很可能是在写出浏览器已经做过的事情。重要的是要注意,这仅适用于启用了JavaScript的浏览器。理想情况下,最好将其作为脱机批处理作业(sed
* nix上的脚本等)每年处理一次,但是如果您需要JavaScript解决方案,我认为它就这么短。(现在,我走了,去吸引命运。)
document.write
在初始解析阶段使用内联内容(如上所示,在<script>...</script>
标签中-或在.js
加载了script
标签的文件中不带 defer
或async
)。页面完全解析后,文档流将关闭,并使用document.write
重新打开它-用新的文档完全替换文档。如果要在主解析完成后再添加一年,则要使用DOM。(这不是更改,一直都是这种方式。)
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.
©版权所有2017-2018,Company。
但是,如果第一年已经过去,那么最短的代码可以这样写:
© Copyright 2010-<script>document.write(new Date().getFullYear())</script>, Company.
JS解决方案效果很好,但我建议使用服务器端解决方案。我检查过的某些网站出现了整个页面空白的问题,只是偶尔会出现一年。
原因是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();