$ (নথি)। প্রস্তুত কি প্রয়োজনীয়?


111

আমি এই প্রশ্নটি স্ট্যাকওভারফ্লোতে দেখেছি তবে মনে হয় না এটির কোনও উত্তর দেওয়া হয়েছিল।

Is $(document).readyপ্রয়োজনীয়?

আমি আমার সমস্ত জাভাস্ক্রিপ্টগুলি পৃষ্ঠার নীচে লিঙ্ক করেছি যাতে তত্ত্বের ভিত্তিতে সেগুলি দস্তাবেজটি যেভাবেই প্রস্তুত হওয়ার পরে চলছে।


3
পুরানো ব্রাউজারগুলি নতুন ব্রাউজারগুলির নিয়োগ করা সমান্তরাল ডাউনলোড উপভোগ করতে পারে না। এটিই মূল কারণ যা আপনার স্ক্রিপ্টগুলি নীচে রাখা হয়। এটি বিশেষত আপনার এইচটিএমএল এবং সিএসএসকে পুরানো ব্রাউজারগুলিতে প্রথমে রেন্ডার করার অনুমতি দেয়। এই মুহুর্তে, আপনি কীভাবে ডিওএম লোড হয়ে গেছে তা সেন্সিং সম্পন্ন করতে চান তা নিয়ে আপনার একটি পছন্দ আছে। আপনার জেসগুলি লাথি মেরে ফেলার জন্য দুটি জনপ্রিয় পদ্ধতি হ'ল উইন্ডো.অনলোড এবং $ (নথি) ready উইন্ডো.অনলোডের অন্যান্য বিকল্পগুলি এবং সহজেই অনুসন্ধান করা, সুস্পষ্ট ডাউনসাইড রয়েছে। বিন্দুটি হ'ল document (নথি) ready
ব্র্যাডচেসনি 79

উত্তর:


125

কি $(document).readyপ্রয়োজনীয়?

না

আপনি যদি আপনার সমস্ত স্ক্রিপ্টগুলি ঠিক আগে রেখে দেন </body> বন্ধ করার ট্যাগের ঠিক একই জিনিসটি সম্পন্ন করেছেন।

অধিকন্তু, স্ক্রিপ্টটি যদি ডিওএম অ্যাক্সেস করার প্রয়োজন না হয় তবে এটি অন্যান্য স্ক্রিপ্টগুলির উপর নির্ভরশীলতার বাইরেও যেখানে লোড হয়েছে তাতে কিছু আসে যায় না।

অনেকগুলি সিএমএসের জন্য, স্ক্রিপ্টগুলি কোথায় লোড হবে সে সম্পর্কে আপনার খুব বেশি পছন্দ নেই, তাই document.readyইভেন্টটি ব্যবহার করার জন্য মডিউলার কোডের পক্ষে এটি ভাল ফর্ম । আপনি যদি অন্য কোনও জায়গায় পুনরায় ব্যবহার করেন তবে আপনি কি সত্যিই ফিরে যেতে এবং পুরানো কোডটি ডিবাগ করতে চান?

অন্য প্রসঙ্গ:

একটি সাইড নোট হিসাবে: আপনি ব্যবহার করা উচিত jQuery(function($){...});পরিবর্তে $(document).ready(function(){...});হিসাবে এটি ওরফে বাধ্য করে $


আপনি কি নিশ্চিত যে এটি "ঠিক একই জিনিস"? আমি এই ছাপে ছিলাম যে আপনার সিএসএস (বা অন্যান্য কোডটি মূল এইচটিএমএল এর সাথে সমান্তরালভাবে লোড করা) এখনও পুরোপুরি পার্স করা যায় না।
জাচ লিসোবে

6
@ জাচএল, সিএসএসের পুরো বিশ্লেষণ করার আগে ডকুমেন্টটি প্রস্তুত থাকতে পারে। ইভেন্টের মতো document.ready নয়onload , যেখানে চিত্র এবং অন্যান্য বাহ্যিক সম্পদগুলি লোড করা শেষ করেছে।
zzzzBov

স্পষ্টতার জন্য ধন্যবাদ।
Zach Lysobey

5
এই "না" আমাকে কেবল 3 ঘন্টা কাজের জন্য ব্যয় করেছে .. নিশ্চিত করুন যে আপনি ভুল করবেন না </body> <body> :) এর সাথে
তেজয়

1
আমি অবশ্য প্রয়োজনের পরেও ওরফে জোর করার সাথে একমত নই, বিশেষত যদি noConflict()কোনও কারণে প্রয়োজন হয়।
জে ব্লাঞ্চার্ড 13

22

না, আপনার জাভাস্ক্রিপ্ট যদি বন্ধ হওয়ার আগে শেষ জিনিস হয় তবে আপনাকে এই ট্যাগগুলি যুক্ত করার প্রয়োজন হবে না।

পার্শ্ব নোট হিসাবে, $ (দস্তাবেজ) এর জন্য একটি শর্টহ্যান্ড readyডিডি নীচের কোড।

$(function() {
// do something on document ready
});

এই প্রশ্নটি ভাল হতে পারে। আপনি কি এটি পড়েছেন? jQuery: পৃষ্ঠার নীচে বাহ্যিক জেএস হলে ডকুমেন্ট.ডিআর কেন ব্যবহার করবেন?


6
প্রশ্নটি মূলত "আমি যখন আমার স্ক্রিপ্টগুলি শরীরের নীচে রাখি তখন কি আমার কী ডকুমেন্টের প্রস্তুত থাকতে হবে?" না, "লেখার কোনও শর্টকাট উপায় আছে কি না $(document).ready()"?
nnnnnn

4

না, এটি প্রয়োজনীয় নয় যদি আপনি জানেন যে আপনার কোনও বিলম্বিত জিনিস হচ্ছে না - তবে বেশিরভাগ ক্ষেত্রেই আপনি জানতে পারবেন যে আপনি কী উপরের থেকে নীচে কাজ করছেন তা বিকাশ করেছেন কিনা।

- এটি যখন আপনি অন্যের কোডটি পুরোপুরি নিরীক্ষণ না করে নিয়ে আসেন, যা আপনি জানেন না।

সুতরাং, নিজেকে জিজ্ঞাসা করুন আপনি কাঠামো বা সম্পাদক ব্যবহার করছেন যা আপনাকে কাঠামোর সাথে সহায়তা করে? আপনি কি অন্য কারও কোড আনছেন এবং আপনি প্রতিটি ফাইলের মধ্যে পড়তে বিরক্ত করেননি? আপনি কি আপনার কোডটি পরীক্ষার অপারেটিং সিস্টেম, ব্রাউজার এবং ব্রাউজার সংস্করণ ম্যাট্রিক্সের মধ্য দিয়ে যেতে প্রস্তুত? আপনার কি দরকার? আপনার কোড থেকে গতি প্রতি একক আউন্স আলিঙ্গন?

ডকুমেন্ট.ডিয়ার () এগুলির অনেক প্রশ্নকে অপ্রাসঙ্গিক করে তোলে। ডকুমেন্ট.ডিটার () আপনার জীবনকে আরও সহজ করার জন্য ডিজাইন করা হয়েছিল। এটি একটি ছোট আসে (এবং আমি গ্রহণযোগ্য বলে বলতে সাহস করি) পারফরম্যান্স হিট।


আমি কিছু দেখেছি - আপনার একটি সম্পাদনা বাতিল হয়ে গেছে, তবে এটি আমার কাছে দুর্দান্ত দেখাচ্ছে fine আপনি এটি পুনরায় জমা দিতে চাইতে পারেন: stackoverflow.com/review/suggested-edits/3224385
কান্টাস 94 ভারী

1

আমি jquery এর ব্যবহার সম্পর্কে ইন্টারনেটে রেফারেন্স / ব্লগ পোস্ট দেখেছি document.ready। আমার মতে এটি ব্যবহার করা বা পৃষ্ঠার নীচে আপনার সমস্ত জাভাস্ক্রিপ্ট স্থাপন উভয়ই বৈধ। এবং এখন প্রশ্ন আরও ভাল হবে? এটি প্রোগ্রামিং শৈলীর বিষয় মাত্র।


0

না, এটি প্রয়োজন হয় না। আপনি হয় বডি ক্লোজিং ট্যাগের ঠিক আগে স্ক্রিপ্ট ট্যাগটি রাখতে পারেন বা আপনি যদি আই 9 + সমর্থন করছেন তবে আপনি দেশীয় জেএস ব্যবহার করতে পারেন।

<script>alert('DOM Loaded!');</script>
</body>

<script>
document.addEventListener("DOMContentLoaded", function(event) { 
      // DOM has loaded ready to fire JS scripts
    });
</script>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.