Как получить доступ к внутренним функциям встроенного JavaScript веб-сайта из пользовательского сценария Tampermonkey беJavascript

Форум по Javascript
Ответить
Anonymous
 Как получить доступ к внутренним функциям встроенного JavaScript веб-сайта из пользовательского сценария Tampermonkey бе

Сообщение Anonymous »

Я пишу пользовательский скрипт Tampermonkey для https://wplace.live.
Сайт отображает карту мира в HTML . Я хочу наложить изображение, которое остается выровненным по карте, пока пользователь панорамирует и масштабирует ее.
Проблема в том, что сам элемент не перемещается в DOM, когда пользователь перемещает карту, поэтому я не могу определить текущую позицию карты непосредственно по изменениям DOM.
Во время отладки в DevTools я обнаружил внутреннюю функцию внутри одного из встроенных файлов JavaScript сайта, которая размещает маркер на карте. Этот маркер правильно остается прикрепленным к координатам карты во время панорамирования/масштабирования.
Когда я устанавливаю точку останова внутри этой функции (внутри класса zv, метода Place), я могу получить доступ к некоторым внутренним переменным. Из консоли в этой точке останова я могу предоставить помощник окну:

Код: Выделить всё

window.PlaceMarker = (x, y) => {
H.setLngLat({
lat: y / 10000,
lng: x / 10000
}).addTo(T);
};
Сделав это один раз, я могу вызвать PlaceMarker(0, 0) из своего пользовательского сценария, и он работает правильно.
Однако в настоящее время для этого требуется, чтобы пользователь:
  • Открыл DevTools
  • Установил точку останова
  • Дождитесь паузы выполнения
  • Вручную определите функцию в консоли
Я хочу полностью этого избежать.
Вопрос:
Можно ли из пользовательского сценария Tampermonkey программно получить доступ к внутренним переменным/функциям или подключиться к ним встроенный JavaScript сайта (который не отображается в окне) без использования точек останова вручную?
Более конкретно:
  • Могу ли я перехватить или исправить скрипт сайта перед выполнением, чтобы предоставить определенные функции?
  • Существует ли надежный способ подключения к классам/функциям, определенным внутри связанного/минифицированного скрипта?
  • Или это принципиально невозможно, если область действия переменных находится внутри модуля/замыкания?
Я понимаю, что код объединен и минимизирован, а переменные не доступны глобально.
Я ищу общий подход (например, перехват скриптов, исправление обезьян, переопределение конструкторов и т. д.), который работает в этой ситуации.

Подробнее здесь: https://stackoverflow.com/questions/798 ... m-a-tamper
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»