আসল উত্তর: কারণ আপনি স্থগিতের উপর বিশ্বাস করতে পারবেন না cannot
ধারণা হিসাবে, মুলতবি এবং async নিম্নলিখিত হিসাবে পৃথক:
async স্ক্রিপ্টটি ব্লক না করে পটভূমিতে ডাউনলোড করার অনুমতি দেয়। তারপরে, ডাউনলোডটি শেষ করার মুহুর্তে, রেন্ডারিং অবরুদ্ধ এবং সেই স্ক্রিপ্টটি কার্যকর করে utes স্ক্রিপ্ট কার্যকর হয়ে গেলে রেন্ডার পুনরায় শুরু হয়।
ডিফার একই কাজ করে, গ্যারান্টির দাবি ব্যতীত যে স্ক্রিপ্টগুলি পৃষ্ঠায় সুনির্দিষ্টভাবে ক্রম করা হয়েছিল এবং ডকুমেন্ট বিশ্লেষণ শেষ হওয়ার পরে এগুলি কার্যকর করা হবে। সুতরাং, কিছু স্ক্রিপ্টগুলি ডাউনলোড শেষ হতে পারে তারপরে বসে পরে ডাউনলোড হওয়া স্ক্রিপ্টগুলির জন্য অপেক্ষা করুন এবং তাদের সামনে উপস্থিত হয়েছিলেন।
দুর্ভাগ্যক্রমে, সত্যিকার অর্থে কি বিড়ালের লড়াই, ডিফারের সংজ্ঞাটি বিভিন্ন ধারণা অনুসারে পরিবর্তিত হয় এবং সাম্প্রতিকতম চশমাগুলিতেও কোনও কার্যকর গ্যারান্টি সরবরাহ করে না। এখানে এবং এই সমস্যাটির উত্তর হিসাবে , ব্রাউজারগুলি আলাদাভাবে স্থগিত করে:
- কিছু পরিস্থিতিতে কিছু ব্রাউজারে একটি বাগ থাকে যা
defer
স্ক্রিপ্টগুলি ক্রমশ সরিয়ে দেয়।
- কিছু ব্রাউজারগুলি স্ক্রিপ্টগুলি লোড
DOMContentLoaded
হওয়ার পরে ইভেন্টটি বিলম্ব করে defer
এবং কিছু না করে।
- কিছু ব্রাউজারগুলি ইনলাইন কোড সহ এবং কোনও বৈশিষ্ট্য ছাড়াই উপাদানগুলিকে মান্য
defer
করে এবং কিছু এটিকে উপেক্ষা করে।<script>
src
ভাগ্যক্রমে অনুমানটি অন্তত নির্দিষ্ট করে যে অ্যাসিঙ্ক ওভাররাইড স্থগিত করে। সুতরাং আপনি সমস্ত স্ক্রিপ্টগুলিকে async হিসাবে বিবেচনা করতে পারেন এবং ব্রাউজারের মতো সমর্থন পেতে পারেন:
<script defer async src="..."></script>
বিশ্বব্যাপী 98% ব্রাউজার এবং মার্কিন যুক্তরাষ্ট্রে 99% ব্রাউজার এই পদ্ধতির সাহায্যে ব্লক করা এড়াতে পারবে।
(ডকুমেন্টটি বিশ্লেষণ শেষ না হওয়া পর্যন্ত যদি আপনার অপেক্ষা করতে হয়, ইভেন্ট DOMContentLoaded
ইভেন্টটি শুনুন বা jQuery এর .ready()
কার্যকরী ফাংশনটি ব্যবহার করুন You আপনি যে ব্রাউজারগুলিতে মোটেই প্রয়োগ defer
করেন না তাতে কৌতূহলবশত ফিরে যেতে চাইবেন ))