জাভাস্ক্রিপ্ট ডায়ালগের ইতিহাস
জাভাস্ক্রিপ্ট 1995 সালে চালু করা হয়েছিল, এবং জাভাস্ক্রিপ্টের প্রথম সংস্করণে উইন্ডো অবজেক্টের পদ্ধতি ছিল যার নাম alert()
, confirm()
, এবং prompt()
।
যদিও তারা সেই সময়ের জাভাস্ক্রিপ্টে ফিট করে, তাদের সিঙ্ক্রোনাস API আধুনিক ব্রাউজারগুলির জন্য সমস্যাযুক্ত। যেহেতু জাভাস্ক্রিপ্ট ইঞ্জিনকে একটি ব্যবহারকারীর প্রতিক্রিয়া প্রাপ্ত না হওয়া পর্যন্ত বিরতি দিতে হবে, জাভাস্ক্রিপ্ট ডায়ালগগুলি অ্যাপ-মডেল। এবং ডায়ালগগুলি অ্যাপ-মডেল হওয়ার কারণে, সেগুলি সাধারণত (এবং দুর্ভাগ্যবশত) আমাদের ব্যবহারকারীদের ক্ষতি করতে ব্যবহৃত হয়৷
এই কারণে, Chromium টিম অত্যন্ত সুপারিশ করে যে আপনি JavaScript ডায়ালগ ব্যবহার করবেন না।
বিকল্প
ডায়ালগ প্রতিস্থাপনের জন্য অনেক বিকল্প আছে।
alert()/confirm()/prompt()
এর জন্য বেশ কয়েকটি বিকল্প রয়েছে। ইভেন্টের ব্যবহারকারীকে অবহিত করার জন্য (যেমন ক্যালেন্ডারিং সাইট), বিজ্ঞপ্তি API ব্যবহার করা উচিত। ব্যবহারকারীর ইনপুট পাওয়ার জন্য, HTML <dialog>
উপাদানটি ব্যবহার করা উচিত। XSS প্রুফ-অফ-ধারণার জন্য, devtool এর console.log(document.origin)
ব্যবহার করা যেতে পারে।
onbeforeunload
এর জন্য, এটি উল্লেখ করা উচিত যে এটি ইতিমধ্যেই অবিশ্বস্ত। ইলিয়া গ্রিগোরিক যেমন উল্লেখ করেছেন , "মোবাইল প্ল্যাটফর্মে ফায়ার করার জন্য আপনি pagehide
, beforeunload
এবং ইভেন্ট unload
উপর নির্ভর করতে পারবেন না ।" আপনি যদি রাজ্য সংরক্ষণ করতে চান, তাহলে আপনার পৃষ্ঠা দৃশ্যমানতা API ব্যবহার করা উচিত।
পরিবর্তন
onbeforeunload
স্ট্রিং নির্দিষ্ট করার জন্য একটি পৃষ্ঠার ক্ষমতা Chrome 51 এ সরানো হয়েছে । (এটি Safari 9.1 এবং Firefox 4 থেকে শুরু করে Safari দ্বারাও সরানো হয়েছে।)
alert()/confirm()/prompt()
ডায়ালগগুলি অ্যাপ-মডেল থেকে পরিবর্তিত হয়ে খারিজ হয়ে গেছে যখন তাদের ট্যাব থেকে স্যুইচ করা হয় । এই পরিবর্তনটি মে 2017 এর শুরুতে সমস্ত চ্যানেল জুড়ে হয়েছিল।
beforeunload
ডায়ালগগুলিকে Chrome 60 থেকে শুরু করে দেখানোর জন্য পৃষ্ঠায় একটি ব্যবহারকারীর অঙ্গভঙ্গি প্রয়োজন। (এটি beforeunload
ইভেন্টের প্রেরণ পরিবর্তন করে না।) এটি ক্রোমিয়ামকে ফায়ারফক্সের সাথে সারিবদ্ধ করে, যা Firefox 44 এর সাথে এই পরিবর্তনটি করেছে।
পূর্ণস্ক্রীনে থাকাকালীন একটি alert()/confirm()/prompt()
ডায়ালগ দেখানোর ফলে Chrome 61 থেকে শুরু করে পূর্ণস্ক্রীন হারিয়ে যাবে।
prompt()
ডায়ালগ তাদের ট্যাব সক্রিয় করে না। যদি prompt()
একটি ব্যাকগ্রাউন্ড ট্যাব থেকে কল করা হয়, কলটি অবিলম্বে ফিরে আসে এবং কোন ডায়ালগ দেখানো হয় না। এই পরিবর্তনটি মে 2017 এর শুরুতে সমস্ত চ্যানেল জুড়ে হয়েছিল।
alert()
ডায়ালগ তাদের ট্যাব সক্রিয় করে না। যদি ব্যাকগ্রাউন্ড ট্যাব থেকে alert()
কল করা হয়, কল অবিলম্বে ফিরে আসে। ট্যাবটি একটি সূচক দিয়ে চিহ্নিত করা হয়েছে এবং ব্যবহারকারী ট্যাবে স্যুইচ করলে ডায়ালগটি দেখতে পাবেন। এই আচরণের পরিবর্তনটি Chrome 64 এ শুরু হতে দেখা যায়।
confirm()
ডায়ালগ তাদের ট্যাব সক্রিয় করে না। যদি confirm()
একটি ব্যাকগ্রাউন্ড ট্যাব থেকে কল করা হয়, কল অবিলম্বে ফিরে আসে এবং কোন ডায়ালগ দেখানো হয় না। এই আচরণ পরিবর্তন Chrome 69 এ শুরু হতে দেখা যায়।
এই পরিবর্তনগুলির কারণে, যদি আপনার সাইট ডায়ালগ ব্যবহার করে, তাহলে আপনাকে পূর্বে উল্লিখিত বিকল্পগুলি ব্যবহার করার জন্য অগ্রসর হওয়ার পরামর্শ দেওয়া হচ্ছে যাতে এটি আপনাকে প্রভাবিত না করে।