Hola,
¿Tienes alguna idea de cómo puedo obtener elementos DOM en Discourse sin tener que usar un setTimeout y un querySelector?
Porque actualmente hago algo como esto: -
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])
Si no uso los tiempos de espera anteriores, a veces obtengo elementos nulos porque el DOM no se ha cargado por completo, incluso después de poner esto dentro de una función window.onload.
Así que mi objetivo es obtener elementos DOM y cambiar la funcionalidad onChange.
Cualquier ayuda en esto sería genial.
Gracias ![]()