পূর্বের উত্তরে উল্লিখিত হিসাবে এই আচরণটি উইন্ডো অবজেক্টে নাম অ্যাক্সেস হিসাবে পরিচিত । এর মান name
কিছু উপাদানের জন্য অ্যাট্রিবিউটে মান id
সব উপাদান জন্য গুণাবলীর বিশ্বব্যাপী বৈশিষ্ট্য হিসাবে উপলব্ধ করা হয় window
অবজেক্ট। এগুলি নামী উপাদান হিসাবে পরিচিত। যেহেতু window
ব্রাউজারে বিশ্বব্যাপী অবজেক্ট তাই প্রতিটি নামক উপাদান বৈশ্বিক চলক হিসাবে অ্যাক্সেসযোগ্য হবে।
এটি মূলত ইন্টারনেট এক্সপ্লোরার দ্বারা যুক্ত হয়েছিল এবং শেষ পর্যন্ত অন্য সমস্ত ব্রাউজারগুলি কেবল এই আচরণের উপর নির্ভরশীল সাইটের সাথে সামঞ্জস্যের জন্য প্রয়োগ করা হয়েছিল। মজার বিষয় হচ্ছে গেকো (ফায়ারফক্সের রেন্ডারিং ইঞ্জিন) এটি কেবল কুইর্কস মোডে প্রয়োগ করতে বেছে নিয়েছে , অন্য রেন্ডারিং ইঞ্জিনগুলি এটি স্ট্যান্ডার্ড মোডে রেখে দিয়েছে left
তবে, ফায়ারফক্স ১৪ অনুসারে, ফায়ারফক্স এখনwindow
স্ট্যান্ডার্ড মোডেও নামটির অ্যাক্সেস সমর্থন করে । কেন তারা এটিকে বদলেছে? দেখা যাচ্ছে যে এখনও অনেকগুলি সাইট মানক মোডে এই কার্যকারিতার উপর নির্ভর করে। মাইক্রোসফ্ট এমনকি এমন একটি বিপণন ডেমো প্রকাশ করেছিল যা ফায়ারফক্সে ডেমোকে কাজ করা থেকে বিরত করে।
ওয়েবকিট সম্প্রতি বিপরীতে বিবেচনা করেছে , window
কেবল কুইর্কস মোডে অবজেক্টটির নাম অ্যাক্সেস রিলেগেট করে। তারা গেকোর মতো একই যুক্তি দিয়ে এর বিরুদ্ধে সিদ্ধান্ত নিয়েছিল।
সুতরাং… উন্মাদ বলে মনে হচ্ছে এই আচরণটি এখন স্ট্যান্ডার্ড মোডে সমস্ত বড় ব্রাউজারের সর্বশেষতম সংস্করণে ব্যবহার করা প্রযুক্তিগতভাবে নিরাপদ । নামযুক্ত অ্যাক্সেসটি কিছুটা সুবিধাজনক বলে মনে হলেও এটি ব্যবহার করা উচিত নয় ।
কেন? বিশ্বব্যাপী ভেরিয়েবলগুলি খারাপ কেন এই প্রবন্ধে প্রচুর যুক্তি সংক্ষিপ্ত করা যেতে পারে । সরল কথায় বলতে গেলে, অতিরিক্ত গ্লোবাল ভেরিয়েবলগুলির একগুচ্ছ থাকা আরও বাগের দিকে নিয়ে যায়। ধরা যাক আপনি দুর্ঘটনাক্রমে একটি এর নাম টাইপ করুন এবং একটি var
টাইপ করতে ঘটবেid
কোনও ডোম নোড , সারপ্রাইস!
অতিরিক্তভাবে, মানীকৃত হওয়া সত্ত্বেও ব্রাউজারের নামযুক্ত অ্যাক্সেসের বাস্তবায়নে এখনও বেশ কয়েকটি বৈষম্য রয়েছে।
- IE ভুল করে এর মান তোলে
name
ফর্ম উপাদানগুলির জন্য বৈশিষ্ট্যের অ্যাক্সেসযোগ্য (ইনপুট, নির্বাচন করুন, ইত্যাদি)।
- গেকো এবং ওয়েবকিট ভুলভাবে
<a>
ট্যাগগুলির মাধ্যমে ট্যাগগুলিকে অ্যাক্সেসযোগ্য করে নাname
বৈশিষ্ট্যের ।
- গেকো ভুলভাবে একই নামের সাথে একাধিক নামযুক্ত উপাদান পরিচালনা করে (এটি রেফারেন্সের অ্যারের পরিবর্তে একটি নোডের রেফারেন্স দেয়)।
এবং আমি নিশ্চিত আপনি যদি প্রান্তের ক্ষেত্রে নাম অ্যাক্সেস ব্যবহার করার চেষ্টা করেন তবে আরও কিছু আছে।
অন্যান্য উত্তরে উল্লিখিত হিসাবে এর document.getElementById
দ্বারা কোনও ডোম নোডের রেফারেন্স পেতে ব্যবহার করুন id
। আপনি তার দ্বারা একটি নোড একটি রেফারেন্স পেতে প্রয়োজন তাহলে name
বৈশিষ্ট্য ব্যবহার document.querySelectorAll
।
দয়া করে আপনার সাইটে নামযুক্ত অ্যাক্সেস ব্যবহার করে এই সমস্যাটি প্রচার করবেন না। অনেক ওয়েব বিকাশকারী এই magন্দ্রজালিক আচরণটি সন্ধান করার জন্য সময় নষ্ট করেছেন । স্ট্যান্ডার্ড মোডে নামযুক্ত অ্যাক্সেস বন্ধ করতে আমাদের সত্যই পদক্ষেপ নিতে এবং রেন্ডারিং ইঞ্জিনগুলি নেওয়া দরকার। স্বল্পমেয়াদে এটি কিছু সাইটকে খারাপ কাজ করে ফেলবে তবে দীর্ঘমেয়াদে এটি ওয়েবকে এগিয়ে নিয়ে যেতে সহায়তা করবে।
আপনি যদি আগ্রহী হন তবে আমি আমার ব্লগে এই সম্পর্কে আরও বিস্তারিতভাবে কথা বলতে পারি - https://www.tjvanoll.com/2012/07/19/dom-element-references-as-global-variables/ ।