কখনও কখনও আপনি সার্ভারটিকে জানাতে চাইতে পারেন যে ব্যবহারকারী পৃষ্ঠাটি ছাড়ছেন। উদাহরণস্বরূপ, সার্ভারে অস্থায়ীভাবে সঞ্চিত সংরক্ষিত চিত্রগুলি পরিষ্কার করার জন্য, সেই ব্যবহারকারীকে "অফলাইন" হিসাবে চিহ্নিত করতে, বা তাদের সেশনটি সম্পন্ন করার পরে লগ ইন করার জন্য এটি দরকারী।
.তিহাসিকভাবে, আপনি ফাংশনটিতে একটি এজেএক্স অনুরোধ পাঠিয়েছিলেন beforeunload
, তবে এটির দুটি সমস্যা রয়েছে। আপনি যদি অ্যাসিঙ্ক্রোনাস অনুরোধটি প্রেরণ করেন তবে অনুরোধটি সঠিকভাবে কার্যকর হবে এমন কোনও গ্যারান্টি নেই। আপনি যদি একটি সিঙ্ক্রোনাস অনুরোধ প্রেরণ করেন তবে এটি আরও নির্ভরযোগ্য তবে অনুরোধটি শেষ না হওয়া পর্যন্ত ব্রাউজারটি স্তব্ধ হয়ে যাবে। যদি এটি ধীর গতিতে অনুরোধ হয় তবে এটি ব্যবহারকারীর জন্য একটি বিশাল অসুবিধা হবে।
ভাগ্যক্রমে, আমরা এখন আছে navigator.sendBeacon()
। sendBeacon()
পদ্ধতিটি ব্যবহার করে , ডেটাটি ওয়েব সার্ভারে অ্যাসিঙ্ক্রোনালি স্থানান্তরিত হয় যখন ব্যবহারকারী এজেন্টটি এমন করার সুযোগ পেয়ে থাকে, আনলোডটি বিলম্ব না করে বা পরবর্তী নেভিগেশনের কার্যকারিতা প্রভাবিত না করে। এটি বিশ্লেষণী ডেটা জমা দেওয়ার সমস্ত সমস্যার সমাধান করে: ডেটা নির্ভরযোগ্যভাবে প্রেরণ করা হয়, এটি অবিচ্ছিন্নভাবে প্রেরণ করা হয় এবং এটি পরবর্তী পৃষ্ঠার লোডিংয়ের উপর প্রভাব ফেলবে না। এটির ব্যবহারের উদাহরণ এখানে:
window.addEventListener("unload", logData, false);
function logData() {
navigator.sendBeacon("/log.php", analyticsData);
}
sendBeacon()
হয় সমর্থিত মধ্যে:
- এজ 14
- ফায়ারফক্স 31
- ক্রোম 39
- সাফারি 11.1
- অপেরা 26
- আইওএস সাফারি 11.4
এটি বর্তমানে এতে সমর্থিত নয়:
- ইন্টারনেট এক্সপ্লোরার
- অপেরা মিনি
আপনার যদি অসমর্থিত ব্রাউজারগুলির জন্য সমর্থন যোগ করার প্রয়োজন হয় তবে সেন্ডবিকন () এর জন্য একটি পলিফিল রয়েছে । যদি পদ্ধতিটি ব্রাউজারে উপলভ্য না হয় তবে এটি পরিবর্তে একটি সিঙ্ক্রোনাস এজেএক্স অনুরোধ প্রেরণ করবে।