안녕하세요,
setTimeout와 querySelector를 사용하지 않고 discourse에서 DOM 요소를 가져오는 방법에 대해 아이디어가 있을까요?
현재 저는 다음과 같은 코드를 사용하고 있습니다:
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])
위와 같은 setTimeout를 사용하지 않으면, window.onload 함수 안에 코드를 넣었음에도 불구하고 DOM이 완전히 로드되지 않아 null 요소를 반환하는 경우가 있습니다.
따라서 제 목표는 DOM 요소를 가져와서 onChange 기능을 변경하는 것입니다.
이 부분에 대한 도움이 있다면 좋겠습니다.
감사합니다 ![]()