<script> ট্যাগটি </ em> ট্যাগের পরে রাখা কি ভুল?


219

শরীরের ক্লোজিং ট্যাগের পরে স্ক্রিপ্ট ট্যাগ স্থাপন করা কতটা ভুল </body>। ?

<html>
  ....
  <body>
     ....
  </body>
  <script type="text/javascript" src="theJs.js"></script>
</html>

1
আধুনিক ব্রাউজারগুলিতে এর জন্য সমর্থন আছে কি?
এক্সড্রোন

উত্তর:


191

এটি বা ট্যাগগুলির বাইরে বৈধতা পাবে না । এটি খুব বেশি তাত্পর্যপূর্ণ করবে না - যদি না আপনি DOM ম্যানিপুলেশনগুলি করেন যা শরীরের উপাদান পুরোপুরি লোড হওয়ার আগে আইই ভাঙ্গতে পারে - এটি বন্ধ হওয়ার ঠিক আগে রেখে দেওয়া ।<body><head></body>

<html>
  ....
  <body>
     ....
     <script type="text/javascript" src="theJs.js"></script>
  </body>
</html>

13
@ পেপলা: আপনি যদি স্ক্রিপ্টটি বডি ট্যাগের ঠিক শেষে রেখে দেন তবে সেখানে পৌঁছানোর সময়ে লোড করার মতো অন্য কোনও সামগ্রী বাকী নেই, সুতরাং এটি বাইরে বা ঠিক ভিতরে রাখার মধ্যে সামান্য পার্থক্য থাকা উচিত। তারপরে আপনার পৃষ্ঠার অতিরিক্ত বেনিফিটটি এখনও বৈধ হয়ে উঠছে, যা আমি আমার উত্তরটি দেওয়ার চেষ্টা করছিলাম।
অ্যান্ডি ই

1
হ্যাঁ, আপনার উত্তরটি ভাল হওয়ায় আমি আপনার সাথে একমত হয়েছি। আমি কেবল এটি যুক্ত করতে চেয়েছিলাম যে পৃষ্ঠাগুলির মাথার পরিবর্তে পৃষ্ঠের নীচে জেএস রাখার কারণ রয়েছে কারণ আমরা দীর্ঘ সময় ধরে করেছি।
ম্যাট ব্রুনমিয়ার

3
@ পিএইচপিস্ট: ভাল, অবৈধ কোড নির্দিষ্ট ব্রাউজারগুলিতে পার্শ্ব প্রতিক্রিয়া হতে পারে। যে কোনও উপায়ে, আমি দেখতে পাচ্ছি না যে এটির ইন্ডেন্টেশনটি এটির উপরে থাকা কোডের চেয়ে কোনও ট্যাব-প্রস্থের চেয়ে কম হ'ল এটি কোনও পরিষ্কার দেখায়।
অ্যান্ডি ই

1
@ পিএইচপিস্ট: আপনি যদি সত্যিই আপনার কোডটি সেভাবে লিখতে চান তবে আমি ব্রাউজারগুলি এটির সাথে লড়াই করার আশা করব। আমি এখনও আপনার কোডটি বৈধতা দেওয়ার জন্য লেখার পরামর্শ দিই।
অ্যান্ডি ই

1
@ টেকনোসরাস: সবসময় রয়েছে <script src="..." defer>, যা সমস্ত বড় ব্রাউজারগুলিতে কাজ করে (যদিও আইই 9 এবং তলদেশে সম্ভাব্য ব্রেকিং বাগ সহ)।
অ্যান্ডি ই

88

হ্যাঁ. শরীরের জন্য শেষ ট্যাগের পরে কেবলমাত্র মন্তব্য এবং এইচটিএমএল উপাদানটির জন্য শেষ ট্যাগকে মঞ্জুরি দেওয়া হয়।

ব্রাউজারগুলি ত্রুটি পুনরুদ্ধার করতে পারে, তবে আপনার কখনই তার উপর নির্ভর করা উচিত নয়।


12
এটি একটি ভাল উত্তর। আপনার সমস্ত কিছু কেটে ফেলতে হবে এবং একটি ক্লোজিং ট্যাগ পেস্ট করতে হবে তখন এটি ভুল করার ঝুঁকিতে মোবাইলের সাথে প্রচুর নতুন ব্রাউজার চলে আসে।
এরিক রেপেন

33

অ্যান্ডি যেমন বলেছেন যে নথিটি বৈধ হবে না, তবে তবুও স্ক্রিপ্টটি ব্যাখ্যা করা হবে। উদাহরণস্বরূপ ওয়েবকিট থেকে স্নিপেট দেখুন :

void HTMLParser::processCloseTag(Token* t)
{
    // Support for really broken html.
    // we never close the body tag, since some stupid web pages close it before 
    // the actual end of the doc.
    // let's rely on the end() call to close things.
    if (t->tagName == htmlTag || t->tagName == bodyTag 
                              || t->tagName == commentAtom)
        return;
    ...

11
"সত্যই ভাঙা এইচটিএমএল জন্য সমর্থন।" - আমি মনে করি এটি সব বলেছে।
ডায়োগো কলারস

8

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


1
এবং তবুও গুগল "সর্বশেষ আপডেট হওয়া 10 ই এপ্রিল, 2014" সহ জি + সাইন-ইন কীভাবে করবেন তার উদাহরণে এটি করে। এটি সার্ভারে জাভা জন্য সংস্করণ থেকে পেয়েছি ( developers.google.com/+/quickstart/java ) তবে সম্ভবত এটি সবার জন্য একই HTML + js।
টম

2

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

অন্য কিছু "পার্স ত্রুটি"। "সন্নিবেশ মোড" কে "দেহে" স্যুইচ করুন এবং টোকেনটি পুনরায় প্রসেস করুন।

প্রযুক্তিগতভাবে ব্রাউজারের মাধ্যমে এটি অভ্যন্তরীণ প্রক্রিয়া, কীভাবে তারা এটিকে চিহ্নিত করে এবং এটি অপ্টিমাইজ করে।

আমি আশা করি আমি কাউকে সাহায্য করেছি


0

হ্যাঁ. তবে আপনি যদি এর বাইরে কোড যুক্ত করেন তবে সম্ভবত বিশ্বের শেষ হবে না যেহেতু বেশিরভাগ ব্রাউজারগুলি এটি ঠিক করে দেবে, তবে এটি প্রবেশ করা এখনও খারাপ অভ্যাস is


0

গুগল আসলে এটি 'সিএসএস অপ্টিমাইজেশন' এর ক্ষেত্রে সুপারিশ করে। তারা উপরে-ভাঁজ শৈলীর সমালোচনামূলকভাবে ইন-আস্তরণ এবং বাকি (সিএসএস ফাইল) মুলতুবি করার পরামর্শ দেয়।

উদাহরণ:

<html>
  <head>
    <style>
      .blue{color:blue;}
    </style>
    </head>
  <body>
    <div class="blue">
      Hello, world!
    </div>
  </body>
</html>
<noscript><link rel="stylesheet" href="small.css"></noscript>

দেখুন: https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery


8
আপনাকে bodyউপাদানটির বাইরে জিনিস রাখার কথা নয় । গুগল নিবন্ধটি কাউকে এ জাতীয় কোনও কাজ করার পরামর্শ দেয় না।
চেজমসকাল

2
আমি ভীত যে গুগল পৃষ্ঠাটি আসলে ঠিক ঠিক এটি বলেছে।
10

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

1
"এলিমেন্ট নোসক্রিপ্ট" "এফটিএমএল এইচটিএমএল" এবং "এলিমেন্ট বডি" এর
বিজি ব্রুনো

0

আধুনিক ব্রাউজারগুলি এর মতো শরীরে স্ক্রিপ্ট ট্যাগ নেবে:

<body>
    <script src="scripts/main.js"></script>
</body>

মূলত, এর অর্থ হ'ল পৃষ্ঠাটি শেষ হয়ে গেলে স্ক্রিপ্টটি লোড হয়ে যাবে, যা নির্দিষ্ট ক্ষেত্রে (যেমন DOM ম্যানিপুলেশন) কার্যকর হতে পারে। তবে, আমি আপনাকে একই স্ক্রিপ্টটি গ্রহণ এবং "ডিফার" দিয়ে এটি হেড ট্যাগে রাখার সুপারিশ করছি, কারণ এটি একই প্রভাব দেবে।

<head>
    <script src="scripts/main.js" defer></script>
</head>

কি দরকারী হবে যদি scriptট্যাগ একটি ছিল eventঅ্যাট্রিবিউট যে যখন স্ক্রিপ্ট বিশ্লেষণ করতে নির্ধারণ সংজ্ঞায়িত করা যেতে পারে। সুতরাং আপনার event="load" event="DOMContentLoaded"স্ক্রিপ্টটি DOM তৈরির পরে বা event="beforeunload"উইন্ডো beforeunloadইভেন্টে চালানোর জন্য রয়েছে । উদাহরণ <script src="scripts/main.js" event="DOMContentLoaded"></script>,।
1.21 গিগাওয়াটস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.