غالبًا ما تكون هناك حاجة لذلك ، أي عند ترك صفحة ويب معينة ، لا ينقر المستخدم بالضرورة على تسجيل الخروج ، مما سيؤدي إلى عدم تدمير الجلسة في الوقت المناسب. من أجل إدراك وظيفة تسجيل الدخول التلقائية عندما يغادر المستخدم الصفحة ، يجب إرسال أمر تسجيل الدخول في وظيفة معالجة أحداث OnBeOnload في صفحة الويب. يتم تنفيذ هذا المكان في الغالب باستخدام أياكس. في بعض الأحيان يتضمن أيضًا مشكلات الوصول عبر المجال. هناك مشكلة توافق المتصفح في هذا المكان.
هناك نقطتان عدم توافق المتصفحات عند التعامل مع هذا المطلب:
1. عدم التوافق عند التعامل مع Ajax ، يتم استخدام jQuery لحلها هنا.
2. عدم التوافق عند إرسال طلب AJAX
الرمز الرئيسي هو كما يلي:
دالة logout () {var logouturl = "xxxx" ؛ // url المستخدم لتسجيل الخروج من المستخدم إذا كانت (logouturl == "") إرجاع ؛ var useragent = navigator.useragent.toLowerCase () ؛ if (useragent.indexof ("msie")>-1) {// ie $ .ajax ({url: logouturl ، crossdomain: true ، async: false ، datatype: "jsonp"}) ؛ } آخر {// firefox chrome $ .ajax ({url: logouturl ، async: false}) ؛ }} window.onbeforeunload = function () {logout () ؛ } ؛وصف الرمز:
لدى Firefox مستوى أمان مرتفع عند معالجة JS. يتم تقييد العديد من الأذونات التي يمكن أن تستخدمها JS في IE و Chrome في Friefox ، لذلك
if (useragent.indexof ("msie")>-1) {// ie} آخر {// firefox chrome}يحدد هذا الرمز نوع المتصفح الحالي.
الرمز المتوافق مع Firefox و Chrome كما يلي:
$ .ajax ({url: logouturl ، async: false}) ؛يجب ضبط Async على خطأ ، أي أنه متزامن ، ولا يمكن استخدام الطريقة غير المتزامنة الحقيقية ، وإلا فقد لا يتم إرسال الطلب. في الواقع ، يعد Chrome مناسبًا أيضًا لرمز IE التالي. عند إيقاف تشغيل المتصفح ، سيتم إرسال أمر تسجيل الدخول تلقائيًا. ومع ذلك ، عند النقر فوق زر تحديث المتصفح ، فإنه يأمل أيضًا في تسجيل الخروج تلقائيًا من المستخدم. يمكن لـ Chrome استخدام السطر المذكور أعلاه فقط لإصدار طلب تسجيل الدخول.
الرمز المتوافق مع IE كما يلي:
$ .ajax ({url: logouturl ، crossdomain: true ، async: false ، datatype: "jsonp"}) ؛تم تعيين CrossDomain على صواب لحل مشاكل الوصول عبر المجال. إذا لم تكن هذه المشكلة موجودة ، فيمكن تجاهل هذه الخاصية. من الأفضل ضبط سمة Async على False ، والصحيح على ما يرام أيضًا. نوع البيانات: يتم استخدام خاصية "JSONP" أيضًا لحل مشاكل الوصول عبر المجال. يتم استخدامه بالاقتران مع CrossDomain. لا توجد مشكلة في المجال. يمكن حذف هاتين الخصائص.
تم اختبار الرمز أعلاه في IE9 و Chrome27 و Firefox21.
ما سبق هو المناقشة المختصرة التي يجلبها لك المحرر حول النافذة. آمل أن يدعم الجميع wulin.com ~