Всем день добрый!
Написал userJS (пользовательский скрипт) для Б24 и столкнулся с особенностями работы композита, которые не могу побороть.
Получается так, что при инициализации скрипта нужного мне элемента элемента в DOM изначально вообще не существует, при обращении к нему через document.querySelector() я получаю null.
Допустим, хочу я получить элемент <div class="task-detail-list-title">Подзадачи</div>
Скриншот:
Скрытый текст |
---|
[URL=https://i.imgur.com/hnGlF1u.png][IMG WIDTH=1302 HEIGHT=757]https://i.imgur.com/hnGlF1u.png[/IMG][/URL] |
Пробовал вариант отсюда - [URL=https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=39&LESSON_ID=3253]https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=39&LESSON_ID=3253[/URL] .
[CODE] if (window.frameCacheVars !== undefined)
{
BX.addCustomEvent("onFrameDataReceived" , function() {
console.log('composite');
console.log(document.querySelector('.task-detail-list-title'));
});
} else {
BX.ready(function() {
console.log('non-composite');
console.log(document.querySelector('.task-detail-list-title'));
});
}
[/CODE]
Пробовал и с frameRequestStart и с frameCacheVars.
В любом случае, получаю null.
Вопрос к знатокам, на какое событие в таком случае мне повесить обработчик, чтобы выполнить код гарантированно тогда, когда Б24 уже элемент любым способом добавил в DOM-дерево?
Стандартные события ДомКонтетЛоадед и лоад здесь не подошли также.
(при загрузке страницы с ncc=1 такого не возникает, все работает, как и должно)
Может быть, кто-то сталкивался с похожей особенностью, может быть, для Б24 есть какой-то другой способ?