Как получить доступ к внутренним функциям встроенного 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 сайта (который не отображается в окне) без использования точек останова вручную?
Я ищу общий подход (например, перехват скриптов, исправление обезьян, переопределение конструкторов и т. д.), который работает в этой ситуации.
В интересующем исходном файле я заметил строку этого типа this.markers.set(k, theVariableINeed), поэтому отсюда я смогу чтобы добиться того, что мне нужно, переопределив функцию set. Хотя это может сработать, это очень специфическое решение, и мне все равно хотелось бы узнать более общий подход к этой проблеме.

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

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

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

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

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

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