বর্তমান বছরে কোনও ওয়েবসাইটে মুদ্রণের সবচেয়ে কম উপায়


232

ফুটারে কপিরাইটের তারিখটি শক্তভাবে কোড করা হয়েছে এমন কয়েকশ স্থিতিক HTML পৃষ্ঠা আপডেট করতে হবে। আমি এটি কয়েকটি জাভাস্ক্রিপ্টের সাথে প্রতিস্থাপন করতে চাই যা প্রতিবছর স্বয়ংক্রিয়ভাবে আপডেট হবে।

বর্তমানে আমি ব্যবহার করছি:

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

এটি যতটা সংক্ষিপ্ত তা পায়?

উত্তর:


542

এখানে আমি এটি পেতে পারি সবচেয়ে স্বল্পতম:

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

এটি সমস্ত ব্রাউজারে কাজ করবে যা আমি পেরিয়েছি।

আমি কীভাবে সেখানে পৌঁছেছি:

  • আপনি কেবল getFullYearনতুন তৈরির জন্য সরাসরি কল করতে পারেন Date, ভেরিয়েবলের প্রয়োজন নেই। new Date().getFullYear()কিছুটা অদ্ভুত লাগলেও এটি নির্ভরযোগ্য: new Date()অংশটি প্রথমে সম্পন্ন হয়, তারপর .getFullYear()
  • আপনি ড্রপ করতে পারেন type, কারণ জাভাস্ক্রিপ্টটি ডিফল্ট; এমনকি এটি এইচটিএমএল 5 স্পেসিফিকেশনের অংশ হিসাবে নথিভুক্ত করা হয়েছে , যা সম্ভবত ব্রাউজারগুলি ইতিমধ্যে যা করছে তা লিখে রাখবে ।
  • আপনি একটি অতিরিক্ত সংরক্ষিত চরিত্রের জন্য আপনি শেষে সেমিকোলনটি ফেলে দিতে পারেন, কারণ জাভাস্ক্রিপ্টটিতে "স্বয়ংক্রিয় সেমিকোলন সন্নিবেশ," এমন একটি বৈশিষ্ট্য রয়েছে যা আমি সাধারণত ঘৃণা করি এবং এর বিরুদ্ধে রেল করি , তবে এই নির্দিষ্ট ব্যবহারের ক্ষেত্রে এটি যথেষ্ট নিরাপদ হওয়া উচিত।

এটি লক্ষ করা গুরুত্বপূর্ণ যে এটি কেবল ব্রাউজারগুলিতে কাজ করে যেখানে জাভাস্ক্রিপ্ট সক্ষম করা আছে। আদর্শভাবে, এটি অফলাইন ব্যাচ কাজ হিসাবে আরও ভালভাবে পরিচালনা করা হবে ( sed* নিক্সের স্ক্রিপ্ট) ইত্যাদি once তবে আপনি যদি জাভাস্ক্রিপ্ট সমাধান চান তবে আমার মনে হয় এটি যতটা সংক্ষিপ্ত হবে তেমনই সংক্ষিপ্ত। (এখন আমি গিয়েছিলাম এবং ভাগ্য প্রলুব্ধ।)


1
2019 এ এটি সমস্ত পৃষ্ঠার লিখিত সামগ্রীর পুনর্লিখন করে। আমি কিছু অনুপস্থিত করছি?
সিস্টেমগুলি রিবুটার

2
@ সিস্টেমআরবুটার - আপনি কেবল document.writeপ্রাথমিক পার্সিং পর্যায়ে ইনলাইন সামগ্রীর জন্য ব্যবহার করতে পারেন (উপরে দেখানো হিসাবে, একটিতে<script>...</script> ট্যাগ - অথবা একটি .jsএকটি লোড ফাইল scriptট্যাগ ছাড়া defer বা async)। পৃষ্ঠাটি পুরোপুরি বিশ্লেষণ করা হলে নথির স্ট্রিমটি বন্ধ হয়ে যায় এবং document.writeএটি পুনরায় খোলে - ডকুমেন্টটিকে সম্পূর্ণ নতুন জায়গায় প্রতিস্থাপন করে। যদি প্রধান পার্সিং সম্পূর্ণ হওয়ার পরে আপনি এক বছর যুক্ত করতে চান তবে আপনি ডিওএম ব্যবহার করতে চান। (এই একটি পরিবর্তন নয়, এটা সবসময় এই ভাবে হয়েছে।)
টি জে Crowder

44

টিজির উত্তরটি দুর্দান্ত তবে আমি এমন এক দৃশ্যে ছুটে এসেছি যেখানে আমার এইচটিএমএল ইতিমধ্যে রেন্ডার করা হয়েছিল এবং ডকুমেন্ট.উইরাইট স্ক্রিপ্টটি কেবলমাত্র তারিখের বছর সহ সমস্ত পৃষ্ঠা বিষয়বস্তুকে ওভাররাইট করে দেবে।

এই দৃশ্যের জন্য, আপনি নিম্নলিখিত কোডটি ব্যবহার করে বিদ্যমান উপাদানটিতে একটি পাঠ্য নোড যুক্ত করতে পারেন:

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

হ্যাঁ - একটি ভাল সমাধান! আমি স্ক্রিপ্ট স্নিপেটটি বদ্ধ দেহের ট্যাগের ঠিক আগে বা এইচটিএমএল বডি শেষে আপনার অন্যান্য জেএসে স্থানান্তরিত করার পরামর্শ দিই।
খ্রিস্টান মাইকেল

createTextNode()<br>আপনি এইচটিএমএল দিয়ে নোড তৈরি করবেন কীভাবে এইচটিএমএলকে ব্যাখ্যা করে না ?
রুবো 77

19

আপনি যদি ভবিষ্যতে কোনও সময়সীমার সাথে বর্তমান বছরের (উদাহরণস্বরূপ 2017) প্রারম্ভিক বছর হিসাবে অন্তর্ভুক্ত করতে চান যাতে পরের বছর এটি এর মতো প্রদর্শিত হবে: "© 2017-2018, সংস্থা",, তারপরে নীচের কোডটি ব্যবহার করুন । এটি প্রতি বছর স্বয়ংক্রিয়ভাবে আপডেট হবে:

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

© কপিরাইট 2017-2018, সংস্থা।

তবে যদি প্রথম বছর ইতিমধ্যে কেটে যায় তবে সবচেয়ে সংক্ষিপ্ত কোডটি এইভাবে লেখা যেতে পারে:

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

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

1
আমি জানি যে কেবলমাত্র <script> সংক্ষিপ্ত (অন্যান্য উত্তর দেখুন) তবে তার আরও বর্তমান এবং সর্বদা কাজ করবে। আসলে, ডাব্লুপিতে আমার একটি উদাহরণ ছিল যেখানে অন্যটি কাজ করবে না, তবে এই সমস্যাটি ছিল না। নিশ্চিত নয় যে ডাব্লুপিও কেন এই বিষয়ে কোনও সমস্যা ফেলবে ... আমি জানি আজকাল আপনি ড্রপ করতে পারেন; শেষের দিকে এবং স্ক্রিপ্টটি ডিএসএল যাইহোক, তবে এখনও।
মালাচি

9

জেএস সমাধানটি দুর্দান্ত কাজ করে তবে আমি একটি সার্ভার সাইড সমাধানের জন্য পরামর্শ দেব on কয়েকটি সাইট আমি যাচাই করেছিলাম পুরো পৃষ্ঠাটি ফাঁকা হয়ে যাওয়ার বিষয়টি প্রকাশ করেছে এবং কেবল বছরটি একবারে একবারে দেখা হচ্ছে।

এর কারণ হ'ল ডকুমেন্টটি w রাইটিং আসলে পুরো ডকুমেন্টের উপরে লিখেছিল।

আমি আমার বন্ধুকে একটি সার্ভার সাইড সলিউশন বাস্তবায়ন করতে বলেছিলাম এবং এটি তার পক্ষে কাজ করে। পিএইচপি মধ্যে সহজ কোড

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

উপভোগ করুন!


1
আপনার সমাধানটি এত সহজ, তবে বিষয়টি হ'ল প্রশ্নটি জাভাস্ক্রিপ্টের সাথে সম্পর্কিত
মো।

2
হা হা! সমাধান পোস্ট করার সময় ইতিমধ্যে দেওয়া হয়েছিল। তবুও আমি চেয়েছিলাম লোকেরা জানার অন্যান্য উপায়ও রয়েছে! আশা করি এটি ভবিষ্যতে আমার মতো কাউকে সহায়তা করবে!
আর্কানেক্স

আমি আপনার সাথে একমত হই যে একই চিন্তাভাবনার সাথে কোনও সমাধান না হলে আমাদের বিকল্প দেখা দরকার। ভোট কমিয়ে দেওয়ার বিষয়ে সাবধানতা অবলম্বন করুন
Mo

এবং যদি সার্ভার-সাইড সলিউশনটি নোড.জেএস এবং এইভাবে জাভাস্ক্রিপ্ট হয়?
rorymorris89

2
পৃষ্ঠাটি ফাঁকা হয়ে গেলে, এর অর্থ document.writeএটি ডিওএম ইতিমধ্যে লোড হওয়ার পরে ব্যবহৃত হয়েছিল। সমাধানটি হ'ল document.writeসমস্ত ডিওএম লোডের পরে ব্যবহার না করা , বা আরও ভাল, মোটেও ব্যবহার না করা document.write
ব্যবহারকারী4642212

8

এখানে চূড়ান্ততম সংক্ষিপ্ততম দায়িত্বশীল সংস্করণ যা এমনকি AD এবং BC উভয়ই কাজ করে।

[ড্রাম রোলস ...]

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

এটাই. 6 গৃহীত উত্তরের চেয়ে কম বাইটস।

আপনার যদি ES5 সামঞ্জস্যপূর্ণ হওয়া দরকার তবে আপনি এটি নিষ্পত্তি করতে পারেন:

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

4
আপনার ব্যবহারকারী যদি 1000 খ্রিস্টাব্দের আগে সময়ে সময়ে ফিরে যায় তবে কী হবে? বা যদি কোনও ব্যবহারকারী আপনার অ্যাপ> 9999 এডি ব্যবহার করছে? # দায়িত্বজ্ঞানী কোড # ননঅ্যান্টিওয়াই 2 কে;)
নিক স্টিল

3
@ নিকস্টিল আশা করি আমরা সেই মুহূর্তে খাঁটি জাভাস্ক্রিপ্ট লিখছি না।
মাইকেল ম্যাকক্যায়েড

1

খাঁটি জাভাস্ক্রিপ্ট নিয়ে কাজ করতে পারে এটি সম্পর্কে আমি ভাবতে পারি এটি সেরা সমাধান। 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();
        }
    })();
});


1

React.js এর জন্য, ফুটারে আমার জন্য নিম্নলিখিতটি কি কাজ করেছে ...

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

0

ক্রোম অডিট অনুসারে

ধীর সংযোগে থাকা ব্যবহারকারীদের জন্য, বাহ্যিক স্ক্রিপ্টগুলি গতিযুক্তভাবে ইনজেকশনের মাধ্যমে document.write()পৃষ্ঠা লোডকে কয়েক সেকেন্ডের মধ্যে বিলম্ব করতে পারে।

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

ত্রুটি ছাড়াই সমাধানটি হ'ল:

(new Date).getFullYear();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.