Ciao,
Hai qualche idea su come posso ottenere elementi DOM su discourse senza dover usare un setTimeout e un querySelector?
Perché attualmente faccio qualcosa di simile: -
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])
Se non uso i timeout di cui sopra, a volte ottengo elementi nulli poiché il DOM non è stato caricato completamente, anche dopo averlo inserito in una funzione window.onload.
Quindi il mio obiettivo è ottenere elementi DOM e modificare la funzionalità onChange.
Qualsiasi aiuto in questo sarebbe fantastico.
Grazie ![]()