Доброго дня,
В рамках разработки поведенческого движка для ZennoPoster (модель естественного скроллинга страницы) столкнулся с рядом технических вопросов, касающихся выполнения JavaScript и доступа к DOM страницы.
Задача построить корректную модель прокрутки, желательно с возможностью определения геометрии документа (scrollHeight, scrollTop, clientHeight и т.д.). Накопился ряд принципиально важных вопросов с которыми важно разобраться.
Также процессе тестирования возникли следующие вопросы, которые хотелось бы прояснить.
1. Контекст выполнения JS-кубика
В кубике JavaScript доступны режимы:
Вопросы:
2. Доступ к scroll-параметрам страницы
Для реализации корректного Scroll Engine требуется доступ к:
3. Работа через CDP
Попытка использовать CdpDocument.EvaluateScript приводит к ошибке выполнения.
Вопросы:
4. Execution Context
5. Альтернативные способы получения геометрии страницы
Если прямой доступ к DOM через JS невозможен:
От ответов зависит архитектура реализации Scroll Engine и выбор между физической (через scrollTop) и вероятностной моделью прокрутки.
Заранее спасибо всем откликнувшимся.
В рамках разработки поведенческого движка для ZennoPoster (модель естественного скроллинга страницы) столкнулся с рядом технических вопросов, касающихся выполнения JavaScript и доступа к DOM страницы.
Задача построить корректную модель прокрутки, желательно с возможностью определения геометрии документа (scrollHeight, scrollTop, clientHeight и т.д.). Накопился ряд принципиально важных вопросов с которыми важно разобраться.
Также процессе тестирования возникли следующие вопросы, которые хотелось бы прояснить.
1. Контекст выполнения JS-кубика
В кубике JavaScript доступны режимы:
- Локально
- На текущей странице
- На странице расширения
- При загрузке страницы
- При создании окна страницы
Вопросы:
- Выполняется ли JS-кубик в реальном DOM-контексте страницы?
- В каком режиме JS имеет доступ к объектам window и document?
- Есть ли ограничения выполнения JS в Chromium from ZennoBrowser?
- Требуется ли дополнительная настройка профиля или проекта для доступа к DOM через JS?
2. Доступ к scroll-параметрам страницы
Для реализации корректного Scroll Engine требуется доступ к:
- document.documentElement.scrollHeight
- document.documentElement.clientHeight
- window.pageYOffset
- document.documentElement.scrollTop
- Возможно ли получить данные значения через JS-кубик?
- Если да — в каком режиме выполнения?
- Если нет — существует ли альтернативный способ получить текущую позицию прокрутки через C# API (например через Tab, ActiveTab или другие объекты)
3. Работа через CDP
Попытка использовать CdpDocument.EvaluateScript приводит к ошибке выполнения.
Вопросы:
- Поддерживается ли EvaluateScript в Chromium from ZennoBrowser?
- Есть ли ограничения CDP в определённых режимах (антидетект, прокси, эмуляция)?
- Нужно ли активировать вкладку или ожидать полной загрузки DOM перед выполнением JS через CDP?
4. Execution Context
- В каком execution context выполняется JS-кубик?
- Можно ли явно указать главный фрейм?
- Есть ли способ принудительно выполнить JS именно в контексте основной страницы, а не sandbox?
5. Альтернативные способы получения геометрии страницы
Если прямой доступ к DOM через JS невозможен:
- Существует ли способ получить scrollHeight / scrollTop через C# без JS?
- Есть ли события или методы, позволяющие определить достижение низа страницы?
От ответов зависит архитектура реализации Scroll Engine и выбор между физической (через scrollTop) и вероятностной моделью прокрутки.
Заранее спасибо всем откликнувшимся.



