嘿,
您知道如何在不使用 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])
如果我不使用上述超时,我有时会得到 null 元素,因为 DOM 尚未完全加载,即使将其放在 window.onload 函数中也是如此。
所以我的目标是获取 DOM 元素并更改 onChange 功能。
任何帮助都将不胜感激。
谢谢 ![]()