ওয়েব উপাদানগুলির ক্ষেত্রে, এখানে একটি মৌলিক সমস্যা রয়েছে যা এইচটিএমএল এবং জাভাস্ক্রিপ্ট দ্বারা নির্মিত উইজেটগুলি ব্যবহার করা শক্ত করে।
সমস্যা : উইজেটের ভিতরে থাকা ডিওএম গাছটি বাকী পৃষ্ঠা থেকে এনক্যাপুলেটেড নয়। এনক্যাপসুলেশনের এই অভাবটির অর্থ আপনার নথির স্টাইলশিটটি ঘটনাক্রমে উইজেটের অভ্যন্তরের অংশগুলিতে প্রয়োগ হতে পারে; আপনার জাভাস্ক্রিপ্ট ভুলক্রমে উইজেটের অভ্যন্তর অংশগুলি সংশোধন করতে পারে; আপনার আইডিগুলি উইজেটের অভ্যন্তরে আইডিগুলির সাথে ওভারল্যাপ হতে পারে।
ছায়া ডিওএম ডিওএম ট্রি এনক্যাপসুলেশন সমস্যার সমাধান করে ।
উদাহরণস্বরূপ, আপনার যদি এইরকম মার্কআপ থাকে:
<button>Hello, world!</button>
<script>
var host = document.querySelector('button');
var root = host.createShadowRoot();
root.textContent = 'こんにちは、影の世界!';
</script>
তারপর পরিবর্তে
Hello, world!
আপনার পৃষ্ঠার মত দেখাচ্ছে
こんにちは、影の世界!
শুধু তাই নয়, পৃষ্ঠাটিতে জাভাস্ক্রিপ্ট যদি জিজ্ঞাসা করে যে বোতামটির পাঠ্য বিষয়বস্তুটি কী, এটি পেতে যাচ্ছে না “こんにちは、影の世界!”
, তবে “Hello, world!”
ছায়া গোষ্ঠীর নীচে থাকা ডিওএম সাবট্রিটি এনপ্যাপুলেটেড ।
দ্রষ্টব্য : আমি https://www.html5rocks.com/en/tutorials/webcompferences/shadowdom/ থেকে উপরের সামগ্রীটি তুলেছি কারণ এটি ইতিমধ্যে এখানে উত্তরগুলির চেয়ে ছায়া ডিওএমকে বুঝতে আরও সহায়তা করেছে। আমি এখানে প্রাসঙ্গিক সামগ্রী যুক্ত করেছি যাতে এটি অন্যকে সহায়তা করে তবে সে সম্পর্কে বিস্তারিত আলোচনার জন্য লিঙ্কটি একবার দেখুন।