স্ক্রিপ্টগুলির ক্রম লোড করুন এবং সম্পাদন করুন


265

এইচটিএমএল পৃষ্ঠায় জাভাস্ক্রিপ্ট অন্তর্ভুক্ত করার বিভিন্ন উপায় রয়েছে। আমি নিম্নলিখিত বিকল্পগুলি সম্পর্কে জানি:

  • ইনলাইন কোড বা বাহ্যিক ইউআরআই থেকে লোড
  • <হেড> বা <body> ট্যাগ [ 1 , 2 ] এ অন্তর্ভুক্ত
  • কিছুই নেই, deferবা asyncবৈশিষ্ট্য (কেবলমাত্র বাহ্যিক স্ক্রিপ্টগুলি)
  • স্থিতিশীল উত্স অন্তর্ভুক্ত বা অন্যান্য স্ক্রিপ্ট দ্বারা গতিশীল যোগ করা (বিভিন্ন পার্স স্টেটে, বিভিন্ন পদ্ধতি সহ)

হার্ডডিস্ক, জাভাস্ক্রিপ্ট থেকে ব্রাউজার onEventস্ক্রিপ্টগুলি গণনা করা হচ্ছে না: ইউআরআই এবং -অ্যাট্রিবিউটস [ 3 ], জেএস কার্যকর করার জন্য ইতিমধ্যে 16 টি বিকল্প রয়েছে এবং আমি নিশ্চিত যে আমি কিছু ভুলে গেছি।

আমি দ্রুত (সমান্তরাল) লোডিংয়ের সাথে এতটা উদ্বিগ্ন নই, আমি এক্সিকিউশন অর্ডার সম্পর্কে আরও কৌতূহলী (যা লোডিং অর্ডার এবং ডকুমেন্ট অর্ডারের উপর নির্ভর করে )। এমন কোনও ভাল (ক্রস ব্রাউজার) রেফারেন্স রয়েছে যা সত্যই সমস্ত ক্ষেত্রে আচ্ছাদন করে? উদাহরণস্বরূপ http://www.websiteoptimization.com/speed/tweak/defer/ এগুলির মধ্যে কেবল 6 টি নিয়ে কাজ করে এবং বেশিরভাগ পুরানো ব্রাউজারগুলি পরীক্ষা করে।

যেহেতু আমি আশঙ্কা করছি না তাই এখানে আমার নির্দিষ্ট প্রশ্ন: আমার কাছে সূচনা এবং স্ক্রিপ্ট লোডিংয়ের জন্য কয়েকটি (বহিরাগত) প্রধান স্ক্রিপ্ট রয়েছে। তারপরে আমি শরীরের শেষে দুটি স্থির, ইনলাইন স্ক্রিপ্ট পেয়েছি। প্রথমটি স্ক্রিপ্ট লোডারকে গতিতে দেহে অন্য স্ক্রিপ্ট উপাদান (বাহ্যিক js উল্লেখ করে) যুক্ত করতে দেয়। স্ট্যাটিকের দ্বিতীয়, ইনলাইন স্ক্রিপ্টগুলি যুক্ত, বাহ্যিক স্ক্রিপ্ট থেকে জেএস ব্যবহার করতে চায়। এটি মৃত্যুদন্ড কার্যকর করা অন্যটির উপর নির্ভর করতে পারে (এবং কেন :-)?


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

উত্তর:


331

আপনি পরিবর্তনশীল স্ক্রিপ্ট লোড হচ্ছে না হয় অথবা তাদের হিসাবে চিহ্নিত deferবা async, তারপর স্ক্রিপ্ট পৃষ্ঠা সম্মুখীন অনুক্রমে লোড করা হয়। এটি বাহ্যিক স্ক্রিপ্ট বা একটি ইনলাইন স্ক্রিপ্ট কিনা তা বিবেচ্য নয় - তারা পৃষ্ঠায় যে ক্রমটি সম্মুখীন হয়েছে সেভাবে তাদের সম্পাদন করা হয়। বাহ্যিক স্ক্রিপ্টগুলির পরে আসা ইনলাইন স্ক্রিপ্টগুলি সমস্ত বাহ্য স্ক্রিপ্টগুলি লোড করা এবং চালানো না হওয়া অবধি রাখা হয়।

অ্যাসিঙ্ক স্ক্রিপ্টগুলি (সেগুলিকে অ্যাসিঙ্ক হিসাবে নির্দিষ্ট করা যায় তা নির্বিশেষে) লোড করুন এবং একটি অনির্দেশ্য ক্রমে চালিত করুন। ব্রাউজারটি এগুলিকে সমান্তরালে লোড করে এবং যা খুশি তাই সেগুলি চালানো বিনামূল্যে is

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

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

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

deferপুরো পার্সারটি না হওয়া পর্যন্ত অপেক্ষা সহ একটি স্ক্রিপ্ট ট্যাগ এবং তারপরে যে সমস্ত স্ক্রিপ্টগুলি চিহ্নিত deferহয়েছিল তার ক্রমযুক্ত চিহ্নিত করে চালায় । এটি আপনাকে বেশ কয়েকটি স্ক্রিপ্ট চিহ্নিত করতে দেয় যা একে অপরের উপর নির্ভর করে defer। ডকুমেন্ট পার্সার শেষ না হওয়া পর্যন্ত তারা সবাই স্থগিত হয়ে যাবে, তবে তারা নির্ভরতা সংরক্ষণের জন্য যে ক্রম সম্মুখীন হয়েছিল তার ক্রম কার্যকর করবে। আমি মনে করি deferস্ক্রিপ্টগুলি এমন একটি কাতারে ফেলে দেওয়া হয়েছে যা পার্সার হয়ে যাওয়ার পরে প্রক্রিয়া করা হবে। প্রযুক্তিগতভাবে, ব্রাউজারটি যে কোনও সময় পটভূমিতে স্ক্রিপ্টগুলি ডাউনলোড করতে পারে তবে পার্সার পৃষ্ঠাটি বিশ্লেষণ এবং চিহ্নযুক্ত নয় deferবা কোনও ইনলাইন স্ক্রিপ্টগুলি পার্সিং এবং চালনা না করা অবধি পার্সার কার্যকর বা ব্লক করবে না async

এই নিবন্ধটি থেকে একটি উদ্ধৃতি এখানে:

স্ক্রিপ্ট-সন্নিবেশিত স্ক্রিপ্টগুলি আইই এবং ওয়েবকিটগুলিতে সংশ্লেষজনকভাবে সঞ্চালিত হয়, তবে অপেরা এবং প্রাক-4.0 ফায়ারফক্সে সিঙ্ক্রোনালিভাবে কার্যকর হয়।

এইচটিএমএল 5 স্পেসের প্রাসঙ্গিক অংশটি (নতুন কমপ্লায়েন্ট ব্রাউজারগুলির জন্য) এখানে । অ্যাসিঙ্ক আচরণ সম্পর্কে সেখানে অনেকগুলি লেখা আছে। স্পষ্টতই, এই অনুমানটি পুরানো ব্রাউজারগুলিতে (বা ম্যাল-কনফর্মিং ব্রাউজারগুলি) প্রযোজ্য নয় যার আচরণ সম্ভবত আপনাকে নির্ধারণের জন্য পরীক্ষা করতে হবে।

এইচটিএমএল 5 স্পেকের একটি উদ্ধৃতি:

তারপরে, পরিস্থিতি বর্ণনা করে এমন নীচের বিকল্পগুলির মধ্যে প্রথমে অনুসরণ করা উচিত:

যদি উপাদানের একটি সিআরসি বৈশিষ্ট্য থাকে এবং উপাদানটির একটি ডিফার অ্যাট্রিবিউট থাকে এবং উপাদানটিকে "পার্সার-সন্নিবেশিত" হিসাবে চিহ্নিত করা হয়, এবং উপাদানটির একটি অ্যাসিঙ্ক বৈশিষ্ট্য না থাকে তবে উপাদানটির তালিকার শেষের দিকে যোগ করতে হবে স্ক্রিপ্টগুলি কার্যকর করা হবে যখন ডকুমেন্ট উপাদান তৈরি করে এমন পার্সারের নথির সাথে যুক্ত বিশ্লেষণ শেষ করে।

নেটওয়ার্কিং টাস্ক সোর্সটি যে কার্যটি টাস্কের কাতারে রাখে একবার আনার সময় অ্যালগরিদম শেষ হয়ে গেলে অবশ্যই উপাদানটির "পার্সার-এক্সিকিউটড হওয়ার জন্য প্রস্তুত" পতাকা সেট করতে হবে। পার্সার স্ক্রিপ্টটি কার্যকর করতে পরিচালনা করবে।

যদি উপাদানের একটি সিআরসি বৈশিষ্ট্য থাকে এবং উপাদানটিকে "পার্সার-সন্নিবেশিত" হিসাবে চিহ্নিত করা হয়, এবং উপাদানটির একটি অ্যাসিঙ্ক বৈশিষ্ট্য থাকে না তবে উপাদানটি পার্সার নথির পার্সিং-ব্লকিং স্ক্রিপ্টের মুলতুবি থাকে। (ডকুমেন্টে একবারে কেবল একটির মতো স্ক্রিপ্ট থাকতে পারে))

নেটওয়ার্কিং টাস্ক সোর্সটি যে কার্যটি টাস্কের কাতারে রাখে একবার আনার সময় অ্যালগরিদম শেষ হয়ে গেলে অবশ্যই উপাদানটির "পার্সার-এক্সিকিউটড হওয়ার জন্য প্রস্তুত" পতাকা সেট করতে হবে। পার্সার স্ক্রিপ্টটি কার্যকর করতে পরিচালনা করবে।

যদি উপাদানটিতে একটি এসসিআর বৈশিষ্ট্য না থাকে এবং উপাদানটিকে "পার্সার-সন্নিবেশিত" হিসাবে চিহ্নিত করা হয়, এবং এইচটিএমএল পার্সার বা এক্সএমএল পার্সারের নথিতে স্ক্রিপ্টগুলি ব্লক করে এমন একটি স্টাইল শীট থাকে যা উপাদানটি হয় উপাদানটি তৈরি করে এমন পার্সারের নথির পার্সিং-ব্লকিং স্ক্রিপ্ট মুলতুবি। (ডকুমেন্টে একবারে কেবল একটির মতো স্ক্রিপ্ট থাকতে পারে))

উপাদানটির "পার্সার-এক্সিকিউটড হতে প্রস্তুত" পতাকা সেট করুন। পার্সার স্ক্রিপ্টটি কার্যকর করতে পরিচালনা করবে।

যদি উপাদানটির একটি সিআরসি বৈশিষ্ট্য থাকে, একটি অ্যাসিঙ্ক বৈশিষ্ট্য না থাকে এবং এতে "ফোর্স-অ্যাসিঙ্ক" পতাকা সেট থাকে না তবে উপাদানটি স্ক্রিপ্টগুলির তালিকার শেষে যুক্ত করা উচিত যা যত তাড়াতাড়ি সম্ভব যুক্ত হওয়ার সাথে সাথে কার্যকর করা হবে স্ক্রিপ্ট উপাদান নথির সাথে স্ক্রিপ্ট অ্যালগরিদম প্রস্তুত শুরু করার সময়।

আনারিং অ্যালগরিদম শেষ হয়ে গেলে নেটওয়ার্কিং টাস্ক সোর্সটি টাস্ক কাতারে যে কার্যটি স্থাপন করে তা অবশ্যই নিম্নলিখিত পদক্ষেপগুলি চালাবেন:

স্ক্রিপ্টগুলির তালিকায় যদি উপাদানটি এখন প্রথম উপাদান না হয় যা যত তাড়াতাড়ি সম্ভব এটি উপরে যুক্ত করা হয়েছিল কার্যকরভাবে চিহ্নিত করা হবে , তবে উপাদানটিকে প্রস্তুত হিসাবে চিহ্নিত করুন তবে স্ক্রিপ্টটি কার্যকর না করেই এই পদক্ষেপগুলি বাতিল করে দিন।

সম্পাদন: স্ক্রিপ্টগুলির এই তালিকায় প্রথম স্ক্রিপ্ট উপাদানটির সাথে সম্পর্কিত স্ক্রিপ্ট ব্লকটি কার্যকর করুন যা যত তাড়াতাড়ি সম্ভব ক্রমানুসারে কার্যকর করা হবে।

এই স্ক্রিপ্টগুলির তালিকা থেকে প্রথম উপাদানটি সরিয়ে ফেলুন যা যত তাড়াতাড়ি সম্ভব ক্রমে কার্যকর করা হবে।

যদি স্ক্রিপ্টগুলির এই তালিকাটি যত তাড়াতাড়ি সম্ভব কার্যকর করা হবে তবে এখনও খালি নয় এবং প্রথম এন্ট্রি ইতিমধ্যে প্রস্তুত হিসাবে চিহ্নিত করা হয়েছে, তবে পদক্ষেপের লেবেলযুক্ত প্রয়োগটিতে ফিরে যান।

যদি উপাদানের একটি সিআরসি বৈশিষ্ট্য থাকে তবে অবশ্যই স্ক্রিপ্টগুলির সেটটিতে উপাদানটি যুক্ত করতে হবে যা স্ক্রিপ্ট অ্যালগরিদম শুরু করার সময় স্ক্রিপ্ট উপাদানটির নথি হিসাবে যত তাড়াতাড়ি সম্ভব কার্যকর করা হবে।

নেটওয়ার্কিং টাস্ক সোর্স যে কাজটি টাস্কের সারিটিতে স্থাপন করে একবার আনার জন্য অ্যালগরিদম শেষ হয়ে গেলে স্ক্রিপ্ট ব্লকটি কার্যকর করতে হবে এবং তারপরে স্ক্রিপ্টগুলির সেট থেকে উপাদানটি সরিয়ে ফেলতে হবে যা যত তাড়াতাড়ি সম্ভব কার্যকর করা হবে।

অন্যথায় ব্যবহারকারীর এজেন্টকে অবশ্যই স্ক্রিপ্ট ব্লকটি সম্পাদন করতে হবে, অন্য স্ক্রিপ্টগুলি ইতিমধ্যে কার্যকর করা থাকলেও।


জাভাস্ক্রিপ্ট মডিউল স্ক্রিপ্টগুলি সম্পর্কে কী type="module"?

জাভাস্ক্রিপ্টটির এখন সিনট্যাক্সের মতো মডিউল লোডিংয়ের জন্য সমর্থন রয়েছে:

<script type="module">
  import {addTextToBody} from './utils.mjs';

  addTextToBody('Modules are pretty cool.');
</script>

বা, srcবৈশিষ্ট্য সহ:

<script type="module" src="http://somedomain.com/somescript.mjs">
</script>

সহ সমস্ত স্ক্রিপ্টগুলি type="module"স্বয়ংক্রিয়ভাবে বিশিষ্টতা দেওয়া হয় defer। এটি তাদের পৃষ্ঠার অন্যান্য লোডিংয়ের সাথে সমান্তরালভাবে (যদি ইনলাইন না হয়) ডাউনলোড করে এবং সেগুলি ক্রমে চালায় তবে পার্সার শেষ হওয়ার পরে।

মডিউল স্ক্রিপ্টগুলি এমন asyncবৈশিষ্ট্যও দেওয়া যেতে পারে যা যত তাড়াতাড়ি সম্ভব ইনলাইন মডিউল স্ক্রিপ্টগুলি সঞ্চালিত হবে, পার্সারটি না হওয়া পর্যন্ত অপেক্ষা না করা এবং অন্য asyncস্ক্রিপ্টগুলির সাথে সম্পর্কিত কোনও নির্দিষ্ট ক্রমে স্ক্রিপ্টটি চালানোর জন্য অপেক্ষা না করা ।

একটি নিখুঁত দরকারী টাইমলাইন চার্ট রয়েছে যা এখানে এই নিবন্ধে মডিউল স্ক্রিপ্টগুলি সহ স্ক্রিপ্টগুলির বিভিন্ন সংমিশ্রণের সংগ্রহ এবং সম্পাদন দেখায়: জাভাস্ক্রিপ্ট মডিউল লোড হচ্ছে


উত্তরের জন্য ধন্যবাদ, কিন্তু সমস্যা স্ক্রিপ্ট হয় হয় পরিবর্তনশীল পৃষ্ঠা, যার মানে যোগ করা এটা ASYNC বলে মনে করা হয় । বা এটি কেবল <হেড> তে কাজ করে? এবং আমার অভিজ্ঞতা এছাড়াও তারা ডকুমেন্ট ক্রমে মৃত্যুদন্ড কার্যকর করা হয়?
বার্গি

@ বার্গি - যদি এটি গতিশীলভাবে যুক্ত হয় তবে এটি অ্যাসিঙ্ক এবং এটি নিয়ন্ত্রণের জন্য কোড না লিখলে মৃত্যুদণ্ডের আদেশটি অনির্দিষ্টকালের জন্য কার্যকর হয়।
jਫਰ00

ঠিক, কোলিঙ্ক বিপরীতে বলেছেন ...
বার্গি

@ বার্গি - ঠিক আছে, অ্যাসিঙ্ক স্ক্রিপ্টগুলি অনির্দিষ্ট স্থানে লোড হওয়ার জন্য আমি আমার উত্তরটি পরিবর্তন করেছি। এগুলি যে কোনও ক্রমে লোড করা যায়। আমি যদি আপনি হতাম তবে কোলিংকের পর্যবেক্ষণটি সর্বদা যেভাবে হয় তা আমি বিবেচনা করব না। আমি এমন কোনও মানদণ্ড সম্পর্কে জানি না যা বলে যে একটি গতিশীল যুক্ত স্ক্রিপ্টটি তাত্ক্ষণিকভাবে চালিত করতে হবে এবং অন্যান্য স্ক্রিপ্টগুলি এটি লোড না হওয়া পর্যন্ত চালানো থেকে আটকাতে হবে। আমি আশা করব যে এটি ব্রাউজার নির্ভর এবং পরিবেশগত বিষয়গুলির উপরও নির্ভরশীল (স্ক্রিপ্টটি ক্যাশে হয়েছে কিনা ইত্যাদি)।
jender00

1
@ রুডলেন্ডার্স - এটি ব্রাউজার বাস্তবায়নের উপর নির্ভর করে। ডকুমেন্টে স্ক্রিপ্ট ট্যাগটি আগে শুরু করা হয়েছিল, তবে চিহ্নিত হিসাবে deferএটি কার্যকর করে স্থগিত করার পরেও পার্সারকে তার ডাউনলোডটি শীঘ্রই শুরু করার সুযোগ দেয়। নোট করুন যদি আপনার কাছে একই হোস্টের থেকে প্রচুর স্ক্রিপ্ট থাকে তবে তাড়াতাড়ি ডাউনলোড শুরু করা ঠিক একই হোস্ট থেকে অন্যদের ডাউনলোড করা ধীর করে দিতে পারে (যেমন তারা ব্যান্ডউইদথের জন্য প্রতিযোগিতা করে) যাতে আপনার পৃষ্ঠাটি অপেক্ষায় রয়েছে (যেটি নেই defer) তাই এটি একটি ডাবল তরোয়াল হতে পারে।
jender00

13

ব্রাউজারটি স্ক্রিপ্টগুলি এটির ক্রম অনুসারে কার্যকর করবে। আপনি যদি কোনও বাহ্যিক স্ক্রিপ্ট কল করেন তবে স্ক্রিপ্টটি লোড এবং সম্পাদন না হওয়া পর্যন্ত এটি পৃষ্ঠাটি অবরোধ করবে block

এই সত্যটি পরীক্ষা করার জন্য:

// file: test.php
sleep(10);
die("alert('Done!');");

// HTML file:
<script type="text/javascript" src="test.php"></script>

গতিযুক্ত যুক্ত স্ক্রিপ্টগুলি নথিতে যুক্ত হওয়ার সাথে সাথেই সম্পাদন করা হয়।

এই সত্যটি পরীক্ষা করার জন্য:

<!DOCTYPE HTML>
<html>
<head>
    <title>Test</title>
</head>
<body>
    <script type="text/javascript">
        var s = document.createElement('script');
        s.type = "text/javascript";
        s.src = "link.js"; // file contains alert("hello!");
        document.body.appendChild(s);
        alert("appended");
    </script>
    <script type="text/javascript">
        alert("final");
    </script>
</body>
</html>

সতর্কতার অর্ডার "সংযুক্ত" -> "হ্যালো!" -> "চূড়ান্ত"

যদি কোনও স্ক্রিপ্টে আপনি এমন কোনও উপাদান অ্যাক্সেস করার চেষ্টা করেন যা এখনও পৌঁছায়নি (উদাহরণ <script>do something with #blah</script><div id="blah"></div>:) তবে আপনি একটি ত্রুটি পাবেন।

সামগ্রিকভাবে, হ্যাঁ আপনি বাহ্যিক স্ক্রিপ্টগুলি অন্তর্ভুক্ত করতে পারেন এবং তারপরে তাদের ফাংশন এবং ভেরিয়েবলগুলি অ্যাক্সেস করতে পারেন তবে কেবলমাত্র আপনি যদি বর্তমান <script>ট্যাগটি থেকে বেরিয়ে এসে একটি নতুন শুরু করেন।


আমি সেই আচরণটি নিশ্চিত করতে পারি। তবে আমাদের প্রতিক্রিয়া পৃষ্ঠাগুলিতে ইঙ্গিত রয়েছে, এটি কেবলমাত্র টেস্ট.এফপি ক্যাশে থাকলে কাজ করতে পারে। আপনি কি এই সম্পর্কে কোনও নির্দিষ্ট / রেফারেন্স লিঙ্ক জানেন?
বার্গি

4
link.js ব্লক করছে না। দীর্ঘ ডাউনলোডের সময় অনুকরণ করতে আপনার পিএইচপি এর অনুরূপ একটি স্ক্রিপ্ট ব্যবহার করুন।
1983

14
এই উত্তরটি ভুল। এটি সর্বদা ক্ষেত্রে হয় না যে "ডকুমেন্টে যুক্ত হওয়ার সাথে সাথে গতিশীল যুক্ত স্ক্রিপ্টগুলি কার্যকর করা হয়"। কখনও কখনও এটি সত্য (যেমন ফায়ারফক্সের পুরানো সংস্করণগুলির জন্য), তবে সাধারণত এটি হয় না। কার্যনির্বাহী আদেশ, যেমন jfriend00 এর উত্তরে উল্লিখিত হয়েছে তা নির্ধারিত নয়।
ফ্যাবিও বেলট্রামিনী

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


2

অনেকগুলি বিকল্প পরীক্ষার পরে আমি দেখতে পেয়েছি যে নিম্নলিখিত সাধারণ সমাধানটি সমস্ত আধুনিক ব্রাউজারগুলিতে ক্রমযুক্ত গতিযুক্ত লোড হওয়া স্ক্রিপ্টগুলি লোড করছে they

loadScripts(sources) {
    sources.forEach(src => {
        var script = document.createElement('script');
        script.src = src;
        script.async = false; //<-- the important part
        document.body.appendChild( script ); //<-- make sure to append to body instead of head 
    });
}

loadScripts(['/scr/script1.js','src/script2.js'])
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.