এখনও অবধি পোস্ট করা সমস্ত উত্তর সঠিক সমাধান দিচ্ছে, তবে কোনও উত্তরই কংক্রিট সমস্যার অন্তর্নিহিত কারণটি সঠিকভাবে ব্যাখ্যা করতে সক্ষম হয়নি।
ফেসলেটস হ'ল একটি এক্সএমএল ভিত্তিক ভিউ প্রযুক্তি যা এইচটিএমএল আউটপুট তৈরি করতে এক্সএইচএমএল + এক্সএমএল ব্যবহার করে। এক্সএমএলের পাঁচটি বিশেষ অক্ষর রয়েছে যা এক্সএমএল পার্সারের বিশেষ চিকিত্সা করে:
<
একটি ট্যাগ শুরু।
>
একটি ট্যাগ শেষে।
"
একটি বৈশিষ্ট্য মানের শুরু এবং শেষ।
'
একটি বিকল্প বৈশিষ্ট্যের বিকল্প শুরু এবং শেষ।
&
একটি সত্তার শুরু (যা দিয়ে শেষ হয় ;
)।
যদি এর &
যার দ্বারা অনুসৃত হয় না #
(যেমন  
,  
, ইত্যাদি), এক্সএমএল পার্সার পরোক্ষভাবে পাঁচটি এক জন্য খুঁজছেন হয় পূর্বনির্ধারিত সত্তা নাম lt
, gt
, amp
, quot
এবং apos
, বা কোনো নিজে সংজ্ঞায়িত সত্তা নাম । তবে, আপনার নির্দিষ্ট ক্ষেত্রে, আপনি &
একটি জাভাস্ক্রিপ্ট অপারেটর হিসাবে ব্যবহার করেছেন, এক্সএমএল সত্তা হিসাবে নয়। এটি আপনার পেয়ে যাওয়া XML পার্সিং ত্রুটিটিকে পুরোপুরি ব্যাখ্যা করে:
সত্তার নাম অবশ্যই অবিলম্বে সত্তা রেফারেন্সে '&' অনুসরণ করবে
সংক্ষেপে, আপনি জাভাস্ক্রিপ্ট কোডটি ভুল জায়গায় লিখছেন, জেএস ফাইলের পরিবর্তে একটি এক্সএমএল ডকুমেন্ট, সুতরাং সেই অনুযায়ী আপনার সমস্ত এক্সএমএল বিশেষ অক্ষরগুলি থেকে পালানো উচিত। &
যেমন পলান করা আবশ্যক &
।
সুতরাং, আপনার বিশেষ ক্ষেত্রে,
if (Modernizr.canvas && Modernizr.localstorage &&
অবশ্যই হয়ে উঠবে
if (Modernizr.canvas && Modernizr.localstorage &&
এটি এক্সএমএল-বৈধ করতে।
তবে এটি জাভাস্ক্রিপ্ট কোডটি পড়া এবং বজায় রাখা আরও শক্ত করে তোলে। মোজিলা বিকাশকারী নেটওয়ার্কের এক্সএইচটিএমএলের জাভাস্ক্রিপ্ট লেখার দুর্দান্ত নথিতে যেমন বলা হয়েছে , আপনার জাভা স্ক্রিপ্ট কোডটি একটি চরিত্রের ডেটা (সিডিএটিএ) ব্লকে স্থাপন করা উচিত। সুতরাং, জেএসএফের পদগুলিতে, এটি হবে:
<h:outputScript>
<![CDATA[
// ...
]]>
</h:outputScript>
এক্সএমএল পার্সার ব্লকটির বিষয়বস্তুগুলি "প্লেইন ভ্যানিলা" চরিত্রের ডেটা হিসাবে এবং এক্সএমএল হিসাবে ব্যাখ্যা করবে না এবং তাই এক্সএমএল বিশেষ অক্ষরগুলিকে "যেমন রয়েছে" ব্যাখ্যা করবে।
তবে, এর থেকে আরও ভাল হ'ল জেএস কোডটি তার নিজের জেএস ফাইলে রেখে দেওয়া যা আপনি অন্তর্ভুক্ত করেছেন <script src>
, বা জেএসএফ পদগুলিতে <h:outputScript>
,।
<h:outputScript name="onload.js" target="body" />
(নোট করুন target="body"
; এইভাবে জেএসএফ স্বয়ংক্রিয়ভাবে যেখানেই অবস্থান নির্বিশেষে <script>
একেবারে শেষের দিকে রেন্ডার করবে এবং এর সাথে একই প্রভাব অর্জন করবে ; সুতরাং আপনাকে সেই স্ক্রিপ্টে আর ব্যবহার করার দরকার নেই)<body>
<h:outputScript>
window.onload
$(document).ready()
এইভাবে আপনার জেএস কোডে এক্সএমএল-বিশেষ অক্ষর সম্পর্কে আপনাকে চিন্তা করার দরকার নেই। অতিরিক্ত বোনাস হিসাবে, এটি আপনাকে ব্রাউজারটিকে জেএস ফাইল ক্যাশে করার সুযোগ দেয় যাতে মোট প্রতিক্রিয়ার আকার কম হয়।
আরো দেখুন: