我需要更新数百个在页脚中硬编码版权日期的静态 HTML 页面。我想用一些每年自动更新的 JavaScript 来替换它。
目前我正在使用:
<script type="text/javascript">var year = new Date();document.write(year.getFullYear());</script>
这是尽可能短的吗?
多年后,当我做其他事情时,我被提醒Date()(不带new)返回一个字符串,并且这种方式比我原来的下面的字符短 一个字符:
Date()
new
<script>document.write(/\d{4}/.exec(Date())[0])</script>
Date()字符串 from中的第一个四位数字序列指定为 year。(当我在下面发布我的原始答案时,虽然这很常见,但这不是指定的行为。)
当然,此解决方案仅在另外 7,979 年有效(截至 2021 年撰写本文时),因为从 10000 年开始,它将显示“1000”而不是“10000”。
您要求提供 JavaScript 解决方案,所以这是我能得到的最短的解决方案:
<script>document.write(new Date().getFullYear())</script>
这将适用于我遇到的所有浏览器。
我是如何到达那里的:
getFullYear
Date
new Date().getFullYear()
new Date()
.getFullYear()
type
请务必注意,这仅适用于启用 JavaScript 的浏览器。理想情况下,最好将其作为离线批处理作业(sed*nix 上的脚本等)每年处理一次,但如果您需要 JavaScript 解决方案,我认为这将尽可能短。(现在我已经去试探命运了。)
sed
但是 ,除非您使用的服务器 只能 提供静态文件,否则最好在服务器上使用模板引擎执行此操作,并使用缓存标头允许缓存结果页面,直到需要更改日期。这样,您就不需要客户端上的 JavaScript。在内容中使用非defer/async script标记也会短暂地延迟页面的解析和呈现(正是因为这个原因:因为脚本中的代码可能用于document.write输出 HTML)。
defer
async
script
document.write