В документах jsdom https://github.com/jsdom/jsdom, при асинхронной загрузке скрипта рекомендуется опросить наличие определенного элемента, чтобы убедиться, что dom загружает то, что вам нужно.
Приведенный ниже код является моей интерпретацией:
const elementOnPage = (arg: HTMLElement | null): HTMLElement => {
let tried = arg;
while (tried === null) {
// debugger;
console.log("nothing yet");
tried = arg;
}
return tried;
};
затем вызовите функцию следующим образом:
...
await elementOnPage(
dom.window.document.querySelector("#some element that I know will eventually be loaded onto the page")
);
...
Несмотря на то, что я знаю, что этот элемент будет загружен в конечном итоге, это вызывает бесконечный цикл. Кажется, что аргумент может быть оценен как нулевой в первый раз, а затем установлен в нуль каждый последующий раз, но я не уверен. В любом случае я тоже пытался использовать
dom.window.document.getElementsByClassName("some class that will eventually have member elements")
и проверка, что полученная длина коллекции не равна 0, но это возвращает тот же бесконечный цикл. Я не думаю, что метод выбора DOM является проблемой. Итак, что вызывает этот бесконечный цикл и / или есть ли лучший способ опроса элемента?