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()); 这是最短的吗?您

我需要更新几百个静态HTML页面,这些页面的页脚中硬编码了版权日期。我想用一些JavaScript替换它,这些JavaScript每年都会自动更新

目前我正在使用:

<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具有“自动插入分号”功能,这是我通常不喜欢和反对的功能,但在这个特定的用例中,它应该足够安全
需要注意的是,这只适用于启用JavaScript的浏览器。理想情况下,最好每年一次将其作为脱机批处理作业(
sed
scripton*nix,等等)处理,但如果您想要JavaScript解决方案,我认为这是最短的。(现在我去试探命运了。)


但是除非您使用的服务器只能提供静态文件,否则最好在服务器上使用模板引擎并使用缓存头来缓存生成的页面,直到日期需要更改为止。这样,您就不需要在客户端上使用JavaScript。在内容中使用非
延迟
/
异步
脚本
标记也会短暂延迟页面的解析和显示(正是出于这个原因:因为脚本中的代码可能使用
文档.write
输出HTML)。

文档.write(new Date().getFullYear());

如果您希望在未来包含一个时间框架,以当前年份(如2017年)为起始年份,以便明年的时间框架显示为:“©2017-2018,公司”,则使用以下代码。它将每年自动更新:

&copy; 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,公司

但如果第一年已经过去,最短的代码可以这样编写:

&copy; 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>
    &copy;
    <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">&copy; 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标记并将日期注入其中来修复它,如下所示:

&copy; 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,您可以做得更简单一些,如下所示:

&copy; 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