سؤال

هل من الممكن إخطار خادم (تقديم طلب HTTP واحد مع القليل من البيانات ، والاستجابة غير مهمة) عندما يترك العميل الصفحة؟

أنا في الواقع أستخدم تطبيق Python Tornado Comet مع JavaScript الحفاظ باستمرار على اتصال الطلب إلى الخادم (الذي يتم إغلاقه وإعادة فتحه عند الحدث. استنادًا إلى هذا: https://launchpad.net/eftw).

لم أجد طريقة سهلة لتصحيح هذا (مع Firebug ، على وجه الخصوص). وهذا يجعلها مشكلة كبيرة.

أوه ، والرمز الفعلي (لأنه قابل للاستخدام إلى حد ما بالفعل على أي حال): http://bazaar.launchpad.net/~hoverhell/xftw/trunk/files

هل كانت مفيدة؟

المحلول

لا يمكنك القيام بذلك في موثوق بها طريقة ، اعتمادًا على المتصفح والكمون ، من المحتمل أن يتم قتل XMLHTTPrequest قبل أن ينتهي بالفعل.

يريد صانعو المستعرض (بشكل صحيح ، IMO) تقديم الصفحة التالية في أسرع وقت ممكن. ال onbeforeunload و onunload هي أحداث التنظيف التي تهدف إلى التخلص بسرعة من أي متغيرات متبقية ، لا يُقصد بها الانتظار ... وبالتالي فإن المتصفح لا. نظرًا لأن جمع القمامة في المتصفحات الأحدث قد تحسن أيضًا بشكل كبير ، فإن المتصفح لديه سبب أقل لانتظار هذه الأحداث.

يمكنك إرسال طلب في window.onbeforeunload الحدث ... ولكن هل سيصل إلى الخادم؟ يمكن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top