26 lines
731 B
TypeScript
26 lines
731 B
TypeScript
![]() |
const SELECTOR_POLLING_INTERVAL = 5000;
|
|||
|
|
|||
|
export function pollForSelector(
|
|||
|
selector: string,
|
|||
|
selectorPollingTimeLimit: number,
|
|||
|
onSuccess: (element: Element) => void,
|
|||
|
) {
|
|||
|
const deadline = Date.now() + selectorPollingTimeLimit * 1000;
|
|||
|
|
|||
|
const interval = setInterval(() => {
|
|||
|
const element = document.querySelector(selector);
|
|||
|
|
|||
|
if (Date.now() > deadline) {
|
|||
|
clearInterval(interval);
|
|||
|
console.error(`Не удалось найти элемент ${selector} для вставки виджета`);
|
|||
|
return;
|
|||
|
}
|
|||
|
if (!element) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
clearInterval(interval);
|
|||
|
onSuccess(element);
|
|||
|
}, SELECTOR_POLLING_INTERVAL);
|
|||
|
}
|