11

كيف يتم عمل دردشة في موقع بحيث لا تختفي النافذة عند التنقل بين الصفحات مثل فيس بوك

استفسار لمطوري الويب:

في فيسبوك عند الانتقال بين الصفحات تبقى نافذة الدردشة مفتوحة وفي موقع soundcloud كذلك يبقى ملف الصوت قيد التشغيل عند الانتقل بين صفحات الموقع فهل ياترى تمت برمجة النتقل بي صفحات الموقع بشكل كامل بنظام ajax حتى تبقى هذه النوافذ قيد العمل؟

وما الطريقة التي يتم بها ذلك!

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

فيس بوك تستعمل localstorage و الحدث localstorage change

بحيث إذا أغلقت نافذة الدردشة أو فتحت في أحد التبويبات المفتوحة يتم تغيير قيمة مسجلة في localstorage مما يؤدي لإنطلاق الحدث في باقي التبويبات المتصفح المفتوحة على فيس بوك .

مثال :

نفترض أن التبويب A و B مفتوحين على فيس بوك

هذا الكود موجود في التبويب A و B

$(window).bind('storage', function (e) {
    //رسالة
    alert('تغيير في localstorage');
});

إذا قمنا بتغيير أو إضافة قيمة للlocalstogage في التبويب A فإن الرسالة ستضهر في تبويب B فقط

localStorage.setItem('key1', 'val1');

جرب استخدام ال SESSION وضع فيه بعض المتغيرات التي تتغير بفتح النافذة او اغلاقها .. طبعا عن طريق الاجاكس.

ربما هناك طرق افضل .. لكن هذا ما لدي ^^

أنت أجبت على سؤالك بنفسك

نعم في فيس بوك معظم التنقلات تتم ب ajax

الحل الوحيد بغض النظر عن عمل فيسبوك و غيره هو ألا تقوم بإعادة تحميل الصفحة

يمكنك أن تستخدم iframe لمحتوى موقعك و تجعل ال chat خارج هذا ال iframe

يمكن أن تستعمل ajax

يمكن أن تبحث عن تقنيات أخرى ربما تجد html5 تقدم لك شيئاً ما

  • حذف بواسطة المستخدم

العملية تتم بالأجاكس ما يجعلها صداع رأس قليلا.

تابع هذا المجتمع

قريبا سيتم نشر مكتبة ستسهل عليك هذه العملية بالذات لتختصرها في حوالي ال 3 أسطر و بدون جهد برمجي.

سألت هذا السؤال قبل 11 سنة عندما كان مفهوم single page applications جديداً ولكن أصبح هو الأكثر شيوعاً في السنوات الأخيرة مع مكتبات مثل React, Angular,..