توقف المتصفح "نابض الموت" أثناء تحميل المذنب/خادم دفع iframe

StackOverflow https://stackoverflow.com/questions/1064782

سؤال

عند استخدام المذنب ، أو اياكس سحب طويلة تقنيات - iframe هو الذي يستخدم عادة.وعلى الرغم من أن الإطار هو انتظار طويل اتصال وثيق, المتصفح هو الغزل لها نابض (التقدم/مؤشر التحميل).

بعض المواقع ، على سبيل المثال etherpad.com تمكنت من جعله يتوقف.

كيف يفعلون ذلك ؟

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

المحلول

بعد حفر لمدة يوم و ليلة في الشجاعة من الإنترنت, هنا هو ما جئت به:

  1. خادم أرسلت الأحداث باردة جدا حاليا يعمل فقط في الأوبرا ، ولكن قد تكون جزءا من HTML5 و المتصفحات الأخرى قد دعم ذلك في وقت ما.يضيف عنصرا جديدا الوسم مع نوع المحتوى من "application/x-دوم-الحدث-ستريم" الذي يسمح الخادم أن الحريق الأحداث في العميل دوم.وينبغي أن لا تظهر مؤشر التقدم ، بقدر ما أفهم.كما انها تعمل مشروع المعيار ، وليس هاك مثل كل iframe المذنب شيء.

  2. مدعوم في فايرفوكس و سفاري, ولكن ليس في أي أنها يمكن أن تستخدم لفترة طويلة سحب تحميل الصفحة التي تمكن من التعامل مع أجزاء كما تظهر على كل readyStateChange الحدث.لن يظهر مؤشر التقدم*.- انظر التعليق أدناه

  3. ActiveXObject("هتملفيلي") - يمكن استخدامها في أي إنشاء صفحة/نافذة خارج النافذة الحالية نطاق.وهذا يجعل مؤشر التقدم تذهب بعيدا!تحميل iframe سوف تكون غير مرئية المتصفح.

المزيد عن خادم أرسلت-الأحداث:

وأكثر عن اثنين آخرين تقنيات (كما توضح المشكلة بشكل أفضل):* http://meteorserver.org/browser-techniques/

حتى أكثر تعمقا عن كل تقنية و المزيد من التقنيات:

نصائح أخرى

وبالنسبة لي، تشغيل setTimeout على طلب اياكس حل كل شيء. عندما ركضت على طلب من document.ready، حصلت على "نابض من العذاب". ولكن مع setTimeout ذلك لا يحدث. (يعمل هذا الإصلاح أيضا للكروم).

وعادل في القضية التي قد تحتاج بعض الأمثلة، هذا الرجل لم تعطي الحل لحل مشكلة فايرفوكس. http://www.shanison.com/؟p=237

وكان لي نفس المشكلة، وكان الحل هو استخدام اياكس بدلا من IFRAME مخفي. وذلك بدلا من توليد الإطار من مكان ما في الصفحة:

$("#chat .msg_list").prepend('<iframe id="hidden" src="chatFrame?id=$userId" frameborder="0" height="0" width="100%"></iframe>');

واعتدت دعوة اياكس مسج لتحميل محتويات IFRAME في بعض شعبة:

$('#chat #chat_comet').load('chatFrame?id=$userId');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top