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);
|
||
}
|