هل يمكنك مشاركة المزيد حول ما تحاول تحقيقه؟ هناك عدة واجهات برمجة تطبيقات مختلفة تتيح لك تعديل محتوى المنشور عند عرضه. الأكثر شيوعًا منها هو api.decorateCookedElement
في الواقع، أدركت للتو أنني بحاجة إلى تشغيل الدالة على محتوى المنشور المضاف إلى DOM.
أنا أقوم عملياً بإعادة إنشاء واجهة برمجة التطبيقات addPosterIcon، لأن واجهتي يجب أن تحتوي على HTML مخصص. لقد أنجزت كل شيء يعمل بشكل صحيح، باستثناء عندما يتم التمرير في الصفحة الطويلة.
أحاول إضافة أيقونة بجانب اسم مستخدم البوستر، مما يُطلق حدثًا مخصصًا. المشكلة الوحيدة هي أنها لا تُضاف بعد عند حدوث تغيير في DOM.
المشكلة مع هذه الطريقة هي أنها تُفعّل كائنات مطبوخة متعددة في وقت واحد، وبالتالي تفضّل استخدام معرف (لتجنب تسرب الذاكرة)، وهو ما لا أحتاجه. ما كان سيفيدني هو إذا تم تفعيل حدث واحد فقط بعد أن تُطبخ جميع العناصر. لدي فكرة حول كيفية تحقيق ذلك، لكن هل توجد طريقة صحيحة للقيام بذلك باستخدام واجهة برمجة تطبيقات Discourse؟
سيتم استدعاء واجهة برمجة التطبيقات decorateCookedElement مرة واحدة لكل منشور تم عرضه. سيتم تمرير عنصر DOM الذي يحتوي على محتوى المنشور إلى دالة الاستدعاء. الفكرة هي أنك تعدل فقط العنصر الذي تم تمريره إليك، ولا تعدل أي شيء آخر في الصفحة.
ولكن بما أنك ترغب في إجراء تعديلات على البيانات الوصفية المحيطة بمحتوى المنشور، فمن المرجح أن decorateCookedElement ليست الخيار الأنسب.
في هذه الحالة، ربما يكون أفضل خيار هو الاطلاع على كيفية تنفيذ واجهة برمجة التطبيقات addPosterIcon: