হয় CDATA ট্যাগ কি কখনো স্ক্রিপ্ট ট্যাগগুলি এবং যদি তাই হয় যখন প্রয়োজন?
অন্য কথায়, এটি কখন এবং কোথায়:
<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>
এটি ভাল:
<script type="text/javascript">
...code...
</script>
হয় CDATA ট্যাগ কি কখনো স্ক্রিপ্ট ট্যাগগুলি এবং যদি তাই হয় যখন প্রয়োজন?
অন্য কথায়, এটি কখন এবং কোথায়:
<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>
এটি ভাল:
<script type="text/javascript">
...code...
</script>
উত্তর:
একজন CDATA অধ্যায় প্রয়োজন বোধ করা হয় যদি আপনি এক্সএমএল যেমন বিশ্লেষণ করতে আপনার দস্তাবেজ প্রয়োজন (যেমন একটি এক্সএইচটিএমএল পৃষ্ঠা এক্সএমএল হিসেবে ব্যাখ্যা করা হয় যখন) এবং আপনার আক্ষরিক লিখতে সক্ষম হতে চান i<10
এবং a && b
পরিবর্তে i<10
এবংa && b
, এক্সএইচটিএমএল পার্স চরিত্র তথ্য হিসাবে জাভাস্ক্রিপ্ট কোড বিশ্লেষণ হবে ডিফল্টরূপে অক্ষর ডেটার বিপরীতে। এটি স্ক্রিপ্টগুলির সাথে কোনও সমস্যা নয় যা বাহ্যিক উত্স ফাইলগুলিতে সঞ্চিত আছে তবে এক্সএইচটিএমএলে কোনও ইনলাইন জাভাস্ক্রিপ্টের জন্য আপনি সম্ভবত সিডিএটিএ বিভাগটি ব্যবহার করতে চাইবেন।
মনে রাখবেন যে অনেক এক্সএইচটিএমএল পৃষ্ঠাগুলিকে কখনই এক্সএমএল হিসাবে পার্স করার উদ্দেশ্যে করা হয়নি যা ক্ষেত্রে এটি কোনও সমস্যা হবে না।
বিষয়টিতে ভাল লেখার জন্য https://web.archive.org/web/20140304083226/http://javascript.about.com/library/blxhtml.htm দেখুন
&
এবং <
চরিত্রগুলি করেন, আপনার কোনও সিডিএটিএ বিভাগের দরকার নেই; এটি এইচটিএমএল এবং এক্সএইচটিএমএল উভয় ক্ষেত্রেই কাজ করবে। আপনি সহজেই বাহ্যিক স্ক্রিপ্টগুলিতে সমস্ত উল্লেখযোগ্য কোড রেখে এবং উদাহরণস্বরূপ কেবল ইনলাইন স্ক্রিপ্ট ব্যবহার করে এটি অর্জন করতে পারেন। ভেরিয়েবলগুলি সূচনা করুন ( আপনার যদি প্রয়োজন হয় তবে স্ট্রিং লিটারালগুলিতে এস্কেটিং &
/ <
টু \x26
/ \x3C
ইন)।
ব্রাউজারগুলি যখন মার্কআপটিকে এক্সএমএল হিসাবে বিবেচনা করে:
<script>
<![CDATA[
...code...
]]>
</script>
ব্রাউজারগুলি যখন মার্কআপটিকে এইচটিএমএল হিসাবে বিবেচনা করে:
<script>
...code...
</script>
যখন ব্রাউজারগুলি মার্কআপটিকে এইচটিএমএল হিসাবে বিবেচনা করে এবং আপনি আপনার এক্সএইচটিএমএল 1.0 মার্কআপটি (উদাহরণস্বরূপ) যাচাই করতে চান।
<script>
//<![CDATA[
...code...
//]]>
</script>
/* ... */
কারণ অন্যথায় যদি লাইন বিরতিগুলি সরানো হয় তবে কোডটি ভেঙে যাবে
একটি HTML পার্সার স্ক্রিপ্টের মধ্যে <script>
এবং এর </script>
অংশ হিসাবে সমস্ত কিছুর সাথে আচরণ করবে । কিছু বাস্তবায়নের জন্য এমনকি একটি সঠিক ক্লোজিং ট্যাগের প্রয়োজন হয় না; তারা স্ক্রিপ্টের ব্যাখ্যা " </
" এ থামায় , যা চশমা অনুসারে সঠিক ।
এইচটিএমএল 5 এবং বর্তমান ব্রাউজারগুলির সাথে আপডেট করুন , এটি আর হয় না।
সুতরাং, এইচটিএমএলে, এটি সম্ভব নয় :
<script>
var x = '</script>';
alert(x)
</script>
একটি CDATA
বিভাগের মোটেই কোনও প্রভাব নেই । এজন্য আপনার লেখার দরকার আছে
var x = '<' + '/script>'; // or
var x = '<\/script>';
অথবা সাদৃশ্যপূর্ণ.
এটি হিসাবে পরিবেশন করা এক্সএইচটিএমএল ফাইলগুলিতেও প্রযোজ্য text/html
। (যেহেতু আইএমএল এক্সএমএল বিষয়বস্তুর প্রকারকে সমর্থন করে না তাই এটি বেশিরভাগ ক্ষেত্রে সত্য)
এক্সএমএলে, বিভিন্ন বিধি প্রযোজ্য। মনে রাখবেন যে এক্সএইচএমটিএল ডকুমেন্টটি কোনও এক্সএমএল সামগ্রী প্রকারের সাথে পরিবেশন করা হলে (নন) ব্রাউজারগুলি কেবল এক্সএমএল পার্সার ব্যবহার করে।
এক্সএমএল পার্সারের কাছে, কোনও script
ট্যাগ অন্য কোনও ট্যাগের চেয়ে ভাল। বিশেষত, একটি স্ক্রিপ্ট নোডে অ-পাঠ্য শিশু নোড থাকতে পারে, " <
" দ্বারা ট্রিগার করা ; এবং " &
" চিহ্নটি একটি অক্ষর সত্তাকে বোঝায়।
সুতরাং, এক্সএইচটিএমএলে, এটি সম্ভব নয় :
<script>
if (a<b && c<d) {
alert('Hooray');
}
</script>
এটির কাজ করার জন্য, আপনি একটি স্ক্রিপ্টে পুরো স্ক্রিপ্টটি মোড়ানো করতে পারেন CDATA
। এটি বিশ্লেষককে বলে: 'এই বিভাগে, " <
" এবং " &
" নিয়ন্ত্রণের অক্ষর হিসাবে বিবেচনা করবেন না ।' জাভাস্ক্রিপ্ট ইঞ্জিনটিকে " <![CDATA[
" এবং " ]]>
" চিহ্নগুলি ব্যাখ্যা করতে বাধা দিতে , আপনি তাদের মন্তব্যগুলিতে মোড়ানো করতে পারেন।
যদি আপনার স্ক্রিপ্টে কোনও " <
" বা " &
" না থাকে তবে আপনার আর CDATA
কোনও অংশের দরকার নেই ।
</
অভ্যন্তর স্ক্রিপ্ট ট্যাগ খারাপ তা জানেন না ।
<script>var b = "<b>bold</b>";</script>
যাচাই করতে ব্যর্থ হয় তবে আপনার উত্তর পড়ে এবং <script>var b = "<b>bold<\/b>";</script>
এটি স্থির করে পরিবর্তন করে।
মূলত এটি এমন একটি নথি যা XHTML এবং HTML উভয়ই লিখতে দেয়। সমস্যাটি হ'ল এক্সএইচটিএমএল-এর মধ্যে, এক্সএমএল পার্সার স্ক্রিপ্ট ট্যাগে &, <,> অক্ষর ব্যাখ্যা করবে এবং এক্সএমএল পার্সিং ত্রুটির কারণ করবে। সুতরাং, আপনি সত্তা সহ আপনার জাভাস্ক্রিপ্ট লিখতে পারেন, যেমন:
if (a > b) alert('hello world');
তবে এটি অযৌক্তিক। আরও বড় সমস্যাটি হ'ল আপনি যদি এইচটিএমএল পৃষ্ঠাটি পড়েন তবে ট্যাগ স্ক্রিপ্টটিকে সিডিএটিএ 'ডিফল্টরূপে' বিবেচনা করা হয় এবং এ জাতীয় জাভাস্ক্রিপ্ট চলবে না। অতএব, যদি আপনি একই পৃষ্ঠায় এক্সএইচটিএমএল এবং এইচটিএমএল পার্সার উভয়ই ঠিক রাখতে চান তবে আপনাকে এক্সএইচটিএমএলে সিডিএটিএ এলিমেন্টে স্ক্রিপ্ট ট্যাগটি আবদ্ধ করতে হবে , তবে এটি HTML এ সংযুক্ত করার প্রয়োজন নেই।
এই কৌশলটি জাভা স্ক্রিপ্ট মন্তব্য হিসাবে একটি সিডিএটিএ উপাদান শুরু করার চিহ্ন চিহ্নিত করে; এইচটিএমএলে জাভাস্ক্রিপ্ট পার্সার সিডিএটিএ ট্যাগটিকে উপেক্ষা করে (এটি একটি মন্তব্য)। এক্সএইচটিএমএল, এক্সএমএল পার্সার (যা জাভাস্ক্রিপ্টের আগে চালিত হয়) এটি সনাক্ত করে এবং বাকীগুলি সিডিএটিএর শেষ অবধি সিডিএটিএ হিসাবে বিবেচনা করে।
এটি একটি এক্স (এইচটি) এমএল জিনিস। আপনি যখন জাভাস্ক্রিপ্টের মতো <
এবং এর >
মধ্যে চিহ্নগুলি ব্যবহার করেন, যেমন দুটি পূর্ণসংখ্যার তুলনা করার জন্য, এটি এক্সএমএলের মতো পার্স করতে হবে, সুতরাং এগুলি কোনও ট্যাগের শুরু বা শেষ হিসাবে চিহ্নিত হবে।
সিডিএটিএ এর মানে হল যে নিম্নলিখিত লাইনগুলি (সমস্ত কিছু ]]>
এক্সএমএল নয় এবং এইভাবে পার্স করা উচিত নয়)।
এইচটিএমএল 4-এ সিডিএটিএ ব্যবহার করবেন না তবে আপনাকে এক্সএইচটিএমএলে সিডিএটিএ ব্যবহার করা উচিত এবং আপনার <এবং> এর মতো অপরিবর্তিত চিহ্ন থাকলে অবশ্যই সিএমএলএটি এক্সএমএলে ব্যবহার করতে হবে।
বাহ্যিকভাবে উল্লেখ না করে আপনার জাভাস্ক্রিপ্ট এম্বেড থাকা অবস্থায় এক্সএইচটিএমএল যাচাইকরণ সঠিকভাবে কাজ করে তা নিশ্চিত করে to
এক্সএইচটিএমএলটির দরকার হয় যে আপনার পৃষ্ঠাটি কঠোরভাবে এক্সএমএল মার্কআপের প্রয়োজনীয়তার সাথে সামঞ্জস্য করবে। যেহেতু জাভাস্ক্রিপ্টে বিশেষ অর্থ সহ অক্ষর থাকতে পারে, তাই আপনার বৈধতাটিকে ত্রুটিযুক্ত হিসাবে চিহ্নিত না করে তা নিশ্চিত করতে আপনাকে এটি অবশ্যই সিডিএটিএতে মুড়িয়ে রাখতে হবে।
ওয়েবে এইচটিএমএল পৃষ্ঠাগুলি সহ আপনি কেবলমাত্র প্রয়োজনীয় জাভাস্ক্রিপ্ট এবং ট্যাগের মধ্যে অন্তর্ভুক্ত করতে পারেন। আপনি যখন আপনার ওয়েব পৃষ্ঠায় এইচটিএমএলকে বৈধতা দিন তখন জাভাস্ক্রিপ্ট সামগ্রীটি সিডিএটিএ (চরিত্রের ডেটা) হিসাবে বিবেচিত হবে যা বৈধকারীর দ্বারা উপেক্ষা করা হয়। আপনি যদি নিজের ওয়েব পৃষ্ঠাটি সেট আপ করার ক্ষেত্রে সাম্প্রতিক এক্সএইচটিএমএল মানগুলি অনুসরণ করেন তবে একই কথাটি সত্য নয়। এক্সএইচটিএমএলের সাথে স্ক্রিপ্ট ট্যাগগুলির মধ্যে কোডটিকে পিসিডিটিএ (পার্সড ক্যারেক্টার ডেটা) হিসাবে বিবেচনা করা হয় যা বৈধকরণকারী দ্বারা প্রক্রিয়া করা হয়।
এ কারণে, আপনি কেবল নিজের ওয়েব পৃষ্ঠাকে 'ব্রেকিং' না করে আপনার পৃষ্ঠায় স্ক্রিপ্ট ট্যাগগুলির মধ্যে জাভাস্ক্রিপ্ট অন্তর্ভুক্ত করতে পারবেন না (অন্ততপক্ষে বৈধকরণকারীর সাথে সম্পর্কিত)।
আপনি এখানে সিডিটিএ এবং এক্সএইচটিএমএল সম্পর্কে আরও শিখতে পারেন ।
সিডিএটিএ নির্দেশ করে যে এর মধ্যে থাকা সামগ্রীগুলি এক্সএমএল নয়।
এখানে উইকিপিডিয়াতে একটি ব্যাখ্যা দেওয়া আছে
আপনি যখন কঠোর এক্সএইচটিএমএল আনুগত্যের জন্য যাচ্ছেন, আপনার সিডিএটিএর চেয়ে কম প্রয়োজন এবং অ্যাম্পারস্যান্ডগুলি অবৈধ অক্ষর হিসাবে চিহ্নিত করা হবে না।
যে কোনও এক্সএমএল উপভাষায় সিডিএটিএ প্রয়োজনীয়, কারণ একটি এক্সএমএল নোডের পাঠ্যটি জাভাস্ক্রিপ্ট হিসাবে মূল্যায়ন করার আগে শিশু উপাদান হিসাবে বিবেচনা করা হয়। এই কারণে হয় JSLint অভিযোগ সম্পর্কে <
regexes মধ্যে অক্ষর।
তথ্যসূত্র
যখন আপনি এটিটি যাচাই করতে চান (এক্সএমএল / এক্সএইচটিএমএল - ধন্যবাদ, লরেন সেগাল )।
এইভাবে পুরানো ব্রাউজার জাভাস্ক্রিপ্ট কোডটি বিশ্লেষণ করবে না এবং পৃষ্ঠাটি ভাঙবে না।
পিছনে সামঞ্জস্যতা। ভাল লাগবে।