لدينا دالة جافاسكريبت تعمل عند تحميل DOM، document.addEventListener(“DOMContentLoaded”, OURFUNCTION).
إنها تعمل بشكل جيد عند تحديث المتصفح، ولكنها لا تظهر أبدًا عند التنقل في الموقع. أفترض أن ذلك لأن Discourse يقوم بتحميل DOM مرة واحدة فقط ثم يتم التعامل مع الباقي عن طريق التنقل من جانب العميل، مثل SPA. لذلك أتساءل، كيف يمكننا تشغيل الدالة عند تغيير التنقل في Discourse نفسه؟ كانت هناك طرق سهلة للقيام بذلك عبر واجهة برمجة تطبيقات المكونات الإضافية، ولكن تم إيقاف استخدام واجهات برمجة التطبيقات هذه ولم أعد أراها مستخدمة في أي مكونات. هل هناك طريقة سهلة للقيام بذلك حتى الآن؟ أم نحتاج إلى إنشاء مكون كامل لتنفيذ بعض جافاسكريبت عند تغيير التنقل؟ شكرًا.
شكراً. لقد قرأت الوثائق بشكل مكثف، ووفقًا لتعليقاتي ومتابعة عضو في منتدى النقاش هناك، فإن واجهة برمجة تطبيقات المكونات الإضافية قديمة وسيتم إيقافها قريبًا. لذا، بينما قد يعمل الكود الخاص بك الآن، إلا أنه سيتعطل قريبًا، أعتقد في التحديثات المستقبلية. لهذا السبب أبحث عن حل أفضل. يبدو مبالغًا فيه إنشاء مكون Glimmer لهذا، لذلك كنت آمل أن يكون هناك حدث آخر يمكننا استخدامه.
بالمناسبة، لقد اختبرناها باستخدام api.OnPageChange وعملت بشكل جيد. لم نواجه بعد حالة لم يكن فيها محتوى DOM متاحًا عند استدعاء OnPageChange، لذلك يبدو أنه يتم تشغيله بعد DomContentLoaded. لكن، لا يمكنني التأكد بنسبة 100٪. شكرًا لمساعدتك في هذا.