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