在网站上打印当前年份的最短方法

2020/10/11 12:21 · javascript ·  · 0评论

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

目前,我正在使用:

<script type="text/javascript">var year = new Date();document.write(year.getFullYear());</script>

这是那么短吗?

这是我能得到的最短的:

<script>document.write(new Date().getFullYear())</script>

这将适用于我所运行的所有浏览器。

我如何到达那里:

  • 您可以直接调用getFullYear新创建的Date,而无需变量。new Date().getFullYear()可能看起来有些奇怪,但这是可靠的:new Date()首先完成零件,然后完成.getFullYear()
  • 您可以删除type,因为JavaScript是默认设置。这甚至被记录为HTML5规范的一部分,在这种情况下,很可能是在写出浏览器已经做过的事情。
  • 您可以在最后放置一个分号来保存一个额外的字符,因为JavaScript具有“自动分号插入”功能,我通常会鄙视并反对此功能,但是在这种特定的使用情况下,它应该足够安全。

重要的是要注意,这仅适用于启用了JavaScript的浏览器。理想情况下,最好将它作为脱机批处理作业(sed* nix上的脚本等)每年处理一次,但是如果您需要JavaScript解决方案,我认为它就这么短。(现在,我走了,去吸引命运。)

TJ的回答很好,但是我遇到了一种情况,其中我的HTML已经呈现,而document.write脚本将只用日期年份覆盖所有页面内容。

对于这种情况,可以使用以下代码将文本节点附加到现有元素:

<div>
    &copy;
    <span id="copyright">
        <script>document.getElementById('copyright').appendChild(document.createTextNode(new Date().getFullYear()))</script>
    </span>
    Company Name
</div>

如果要在将来包括当前年份(例如2017年)的开始时间,以便明年显示如下:“©2017-2018,Company。”,则使用以下代码。它将每年自动更新:

&copy; Copyright 2017<script>new Date().getFullYear()>2017&&document.write("-"+new Date().getFullYear());</script>, Company.

©版权所有2017-2018,Company。

但是如果已经过了第一年,那么最短的代码可以这样写:

&copy; Copyright 2010-<script>document.write(new Date().getFullYear())</script>, Company.
<script type="text/javascript">document.write(new Date().getFullYear());</script>

JS解决方案效果很好,但我建议使用服务器端解决方案。我检查过的某些网站出现了整个页面空白的问题,只是偶尔会出现一年。

原因是document.write实际上覆盖了整个文档。

我请朋友实施服务器端解决方案,该解决方案对他有用。PHP中的简单代码

<?php echo date('Y'); ?>

请享用!

这是最短,最负责任的版本,甚至可以在AD和BC上使用。

[鼓卷...]

<script>document.write(Date().split` `[3])</script>

而已。比可接受的答案短6个字节。

如果您需要与ES5兼容,则可以满足以下条件:

<script>document.write(Date().split(' ')[3])</script>
<div>&copy;<script>document.write(new Date().getFullYear());</script>, Company.
</div>

对于React.js,以下是在页脚中对我有用的...

render() {
    const yearNow = new Date().getFullYear();
    return (
    <div className="copyright">&copy; Company 2015-{yearNow}</div>
);
}

我认为这是最好的解决方案,它将与纯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()可能会使页面加载延迟数十秒。

https://web.dev/no-document-write/?utm_source=lighthouse&utm_medium=devtools

所以没有错误的解决方案是:

(new Date).getFullYear();
本文地址:http://javascript.askforanswer.com/zaiwangzhanshangdayindangqiannianfendezuiduanfangfa.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!