Сайт отображает карту мира в HTML . Я хочу наложить изображение, которое остается выровненным по карте, пока пользователь панорамирует и масштабирует ее.
Проблема в том, что сам элемент не перемещается в DOM, когда пользователь перемещает карту, поэтому я не могу определить текущую позицию карты непосредственно по изменениям DOM.
Во время отладки в DevTools я обнаружил внутреннюю функцию внутри одного из встроенных файлов JavaScript сайта, которая размещает маркер на карте. Этот маркер правильно остается прикрепленным к координатам карты во время панорамирования/масштабирования.
Когда я устанавливаю точку останова внутри этой функции (внутри класса zv, метода Place), я могу получить доступ к некоторым внутренним переменным. Из консоли в этой точке останова я могу предоставить помощник окну:
Код: Выделить всё
window.PlaceMarker = (x, y) => {
H.setLngLat({
lat: y / 10000,
lng: x / 10000
}).addTo(T);
};
Однако в настоящее время для этого требуется, чтобы пользователь:
- Открыл DevTools
- Установил точку останова
- Дождитесь паузы выполнения
- Вручную определите функцию в консоли
Вопрос:
Можно ли из пользовательского сценария Tampermonkey программно получить доступ к внутренним переменным/функциям или подключиться к ним встроенный JavaScript сайта (который не отображается в окне) без использования точек останова вручную?
Более конкретно:
- Могу ли я перехватить или исправить скрипт сайта перед выполнением, чтобы предоставить определенные функции?
- Существует ли надежный способ подключения к классам/функциям, определенным внутри связанного/минифицированного скрипта?
- Или это принципиально невозможно, если область действия переменных находится внутри модуля/замыкания?
Я ищу общий подход (например, перехват скриптов, исправление обезьян, переопределение конструкторов и т. д.), который работает в этой ситуации.
Подробнее здесь: https://stackoverflow.com/questions/798 ... m-a-tamper
Мобильная версия