إذا فهمت أنا كمستخدم نهائي آخر بشكل صحيح، فهذا هو نفس الشيء الذي أواجهه كثيرًا. يتم إعادة تحميل بعض المواضيع وفي لحظة قصيرة، طرفة عين أو اثنتين، يعرض المنتدى منشورًا أقدم ثم يقفز إلى آخر حدود زيارة. لقد حدث لي قبل لحظات وكنت أتوقع القفزة، لكنه توقف عن عرض شيء قديم.
إذًا… لا أستطيع البرمجة ولكن هذا يبدو وكأنه خطأ غريب بأسلوب المهلة - كما لو أن كل شيء في حالة حدودية طوال الوقت وبعد حادث تأخير قصير جدًا يحاول Discourse مواكبة ذلك ويعرض ما هو موجود على الشاشة في تلك اللحظة.
عندما قمت بتمكين الوضع “البطيء”، يمكنني رؤية استدعاء القفل لقفل منشور على الشاشة، ولكن لا يمكنني رؤيته حتى يتم عرضه، لذا فإن تحديد الموضع خاطئ للغاية.
فئة LockOn بأكملها هي بمثابة حل بديل، في هذه الحالة ربما بدلاً من قفل الموضع وتخزينه مؤقتًا، نقوم بشيء آخر؟ ربما هناك آلية لاستدعاء القفل لاحقًا بعد أن تم ملء الشاشة بالمواضيع المعروضة؟
شكراً جزيلاً على خطوات إعادة الإنتاج الواضحة يا @Don
نعم، هذا هو! هناك شيئان يحدثان في نفس الوقت
يجب أن تزيل خدمة شريط التحميل الفئة still-loading من الجسم (body).
يجب على LockOn التمرير إلى المكان الصحيح.
تم جدولتهما كلاهما في جزء afterRender من حلقة تشغيل Ember. وبما أن أمور ‘lock on’ مجدولة تقنيًا أولاً، فقد تم تشغيلها أولاً. وهكذا كان LockOn يعمل بينما كانت جميع عناصر HTML للمنشور في DOM، ولكنها لا تزال تحتوي على display: none.
سيؤدي هذا PR إلى نقل إزالة الفئة still-loading إلى جزء render من حلقة التشغيل، مما يعني أن أي شيء آخر يقوم بجدولة أشياء في afterRender سيتم تشغيله بمجرد عرض كل شيء وظهوره:
أتفق! لم أكن أرغب في لمسها كجزء من إصلاح هذا الخطأ، ولكن أعتقد أنه يجب علينا أن نهدف إلى إزالة كل تلك الحلول المؤقتة.
بالنظر إلى التعليقات في الملف، يبدو أنه تم تقديمه في الأصل (قبل 10 سنوات!) لمواجهة ميزات ‘استعادة التمرير’ للمتصفح. في الوقت الحاضر، نستخدم history.scrollRestoration = false لتعطيل ميزة المتصفح هذه، لذلك أعتقد أن هذا يجعل معظم الحلول المؤقتة القديمة غير ضرورية.
من الأفضل على الأرجح تجربة هذا النوع من التغييرات الحساسة عبر مكون سمة (theme component) أولاً، وبعد ذلك إذا بدا كل شيء جيدًا، يمكننا دمجه في النواة. أتخيل أن إزالة LockOn ستصلح العديد من الحالات الطرفية الأخرى التي لدينا مع موضع تمرير الموضوع. سأهدف إلى تجربة هذا في الأسابيع القليلة القادمة