أهلاً،
هل لديك فكرة عن كيفية الحصول على عناصر DOM في discourse دون الحاجة إلى استخدام setTimeout و querySelector؟
لأنني حاليًا أفعل شيئًا كهذا: -
setTimeout(() => {
var createTopicButton = document.querySelector("#create-topic");
if(createTopicButton)
createTopicButton.onclick = function (e) {
if (window.Moengage && window.Moengage.track_event) {
window.Moengage.track_event("Topic_Create_Clicked", {});
}
setTimeout(() => {
var topicCreate = document.querySelector("#reply-control .save-or-cancel .btn-primary")
topicCreate.onclick = function (e) {
let heading = document.querySelector('#reply-control #reply-title').value;
let category = document.querySelector('.select-kit-header-wrapper> .select-kit-selected-name > .name > .badge-wrapper > .badge-category > .category-name')?.innerText;
let desc = document.querySelector('.d-editor-textarea-column > .d-editor-textarea-wrapper textarea').value;
let imagePresent = desc.includes("upload://");
if (window.Moengage && window.Moengage.track_event && heading && category && desc) {
window.Moengage.track_event("Topic_Created", {"Category":category,"Topic Name":heading,"Topic Description":desc,"Is_image_present":imagePresent});
}
}
},[300])
};
},[500])
إذا لم أستخدم المهلات المذكورة أعلاه، فأحيانًا أحصل على عناصر فارغة لأن DOM لم يتم تحميله بالكامل، حتى بعد وضع هذا داخل دالة window.onload.
لذا فإن هدفي هو الحصول على عناصر DOM وتغيير وظيفة onChange.
أي مساعدة في هذا ستكون رائعة.
شكراً ![]()