Javascript 在网站上打印当前年份的最短方法
我需要更新几百个静态HTML页面,这些页面的页脚中硬编码了版权日期。我想用一些JavaScript替换它,这些JavaScript每年都会自动更新 目前我正在使用:Javascript 在网站上打印当前年份的最短方法,javascript,html,date,Javascript,Html,Date,我需要更新几百个静态HTML页面,这些页面的页脚中硬编码了版权日期。我想用一些JavaScript替换它,这些JavaScript每年都会自动更新 目前我正在使用: <script type="text/javascript">var year = new Date();document.write(year.getFullYear());</script> var年=新日期();document.write(year.getFullYear()); 这是最短的吗?您
<script type="text/javascript">var year = new Date();document.write(year.getFullYear());</script>
var年=新日期();document.write(year.getFullYear());
这是最短的吗?您要求提供一个JavaScript解决方案,下面是我能得到的最短的解决方案:
<script>document.write(new Date().getFullYear())</script>
document.write(新日期().getFullYear())
这将适用于我遇到的所有浏览器
我是如何到达那里的:
- 您只需在新创建的日期直接调用
,无需变量getFullYear
可能看起来有点奇怪,但它是可靠的:首先完成newdate().getFullYear()
部分,然后是newdate()
.getFullYear()
- 您可以删除
,因为JavaScript是默认值;这甚至被记录为的一部分,在本例中,这很可能是编写浏览器已经做了什么类型
- 您可以在一个额外保存的字符的末尾删除分号,因为JavaScript具有“自动插入分号”功能,这是我通常不喜欢和反对的功能,但在这个特定的用例中,它应该足够安全
sed
scripton*nix,等等)处理,但如果您想要JavaScript解决方案,我认为这是最短的。(现在我去试探命运了。)
但是除非您使用的服务器只能提供静态文件,否则最好在服务器上使用模板引擎并使用缓存头来缓存生成的页面,直到日期需要更改为止。这样,您就不需要在客户端上使用JavaScript。在内容中使用非
延迟
/异步
脚本
标记也会短暂延迟页面的解析和显示(正是出于这个原因:因为脚本中的代码可能使用文档.write
输出HTML)。文档.write(new Date().getFullYear());
如果您希望在未来包含一个时间框架,以当前年份(如2017年)为起始年份,以便明年的时间框架显示为:“©2017-2018,公司”,则使用以下代码。它将每年自动更新:
© Copyright 2017<script>new Date().getFullYear()>2017&&document.write("-"+new Date().getFullYear());</script>, Company.
©;版权所有2017new Date().getFullYear()>2017&&document.write(“-”+new Date().getFullYear());,公司。
©版权所有2017-2018,公司
但如果第一年已经过去,最短的代码可以这样编写:
© Copyright 2010-<script>document.write(new Date().getFullYear())</script>, Company.
<span id="cdate"></span><script>document.getElementById("cdate").innerHTML = (new Date().getFullYear());</script>
<span id="cdate"></span><script>$("#cdate").html(new Date().getFullYear());</script>
©;版权所有2010 document.write(新日期().getFullYear()),公司。
JS解决方案非常有效,但我建议使用服务器端解决方案。我检查过的一些网站,整个页面都是空白的,只是一年中偶尔出现一次
原因是文档。write实际上写了整个文档
我让我的朋友实现了一个服务器端解决方案,这对他很有效。
php中的简单代码
<?php echo date('Y'); ?>
享受吧 TJ的答案非常好,但我遇到了一个场景,其中我的HTML已经呈现,document.write脚本将仅用年份日期覆盖所有页面内容 对于此场景,可以使用以下代码将文本节点附加到现有元素:
<div>
©
<span id="copyright">
<script>document.getElementById('copyright').appendChild(document.createTextNode(new Date().getFullYear()))</script>
</span>
Company Name
</div>
&抄袭;
document.getElementById('copyright').appendChild(document.createTextNode(new Date().getFullYear()))
公司名称
这是一个最短最负责任的版本,它甚至可以同时在广告和商业广告中使用
[鼓轮…]
<script>document.write(Date().split` `[3])</script>
document.write(Date().split``[3])
就这样。比接受的答案短6字节
如果您需要与ES5兼容,您可以满足以下条件:
<script>document.write(Date().split(' ')[3])</script>
document.write(日期().split(“”)[3])
这是我能想到的最好的解决方案,可以与纯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();
}
})();
});
©;document.write(新日期().getFullYear());,公司。
对于React.js,下面是我在页脚中的工作内容
render() {
const yearNow = new Date().getFullYear();
return (
<div className="copyright">© Company 2015-{yearNow}</div>
);
}
render(){
const deanshow=新日期().getFullYear();
返回(
&复印件;公司2015-{earnow}
);
}
根据chrome审计
对于连接速度较慢的用户,动态注入外部脚本
通过document.write()
可以将页面加载延迟数十秒
因此,没有错误的解决方案是:
(new Date).getFullYear();
上述专家提供了许多解决这个问题的方法。可以使用下面的解决方案,它将
不阻止页面呈现
或甚至不重新触发它
在纯Javascript中:
window.addEventListener('load'(
函数(){
document.getElementById('copyright-year')。appendChild(
document.createTextNode(
新日期().getFullYear()
)
);
}
));代码>
©代码>接受的答案并不总是有效
最近的一次更新导致我所有的WordPress页脚版权日期都被下推到了页面的末尾,而不是像以前那样以内联方式写入。我肯定还有其他情况也会发生,但我也注意到了这一点
如果发生这种情况,您可以通过创建一个空的span标记并将日期注入其中来修复它,如下所示:
© Copyright 2010-<script>document.write(new Date().getFullYear())</script>, Company.
<span id="cdate"></span><script>document.getElementById("cdate").innerHTML = (new Date().getFullYear());</script>
<span id="cdate"></span><script>$("#cdate").html(new Date().getFullYear());</script>
document.getElementById(“cdate”).innerHTML=(新日期().getFullYear());
或者,如果您在站点上启用了jquery,您可以做得更简单一些,如下所示:
© Copyright 2010-<script>document.write(new Date().getFullYear())</script>, Company.
<span id="cdate"></span><script>document.getElementById("cdate").innerHTML = (new Date().getFullYear());</script>
<span id="cdate"></span><script>$("#cdate").html(new Date().getFullYear());</script>
$(“#cdate”).html(新日期().get