Как вмешаться в чужой js?

472
24 ноября 2016, 10:28

Вопрос таков, нужно изменить некие ссылки на странице, но к сожалению они хранятся не в виде html, а внутри js и потом только подтягиваются по клику. Можно ли изменить уже написанный js? Или есть ли возможность при загрузке к примеру с помощью расширения Tampermonkey отключить js скрипт который грузится и подключить свой, аналогичный, только чуть-чуть измененный. Если да, то подскажите, как это можно сделать:)

Answer 1

Зависит от того, как именно работает скрипт, и что именно требуется.

Если же просто заменить ссылки, тогда можно добавить кнопку внутрь имеющихся кнопок, и отменять "пропагацию" евента вверх . Пример:

<div onclick="alert('Оригинальная кнопка нажата')">
  <span onclick="var event = arguments[0] || window.event; alert('Инжектная кнопка нажата'); event.stopPropagation()">То что было раньше в кнопке.</span>
</div>

При этом, если вместо div елемент a - тогда нужно отменить евент. Так же, если нужно получить ссылку, всё зависит от конкретной ситуации.

Пример на JSFiddle: https://jsfiddle.net/z4ospxem/

Инжектить свой елемент можно многими способами. Самый простой из них:

document.getElementById("elementToInject").innerHTML = ...

https://jsfiddle.net/z4ospxem/1/

READ ALSO
Как разбить дату 20.11.2016 по 20.01.2017?

Как разбить дату 20.11.2016 по 20.01.2017?

Нужно что бы эти даты разбились на составляющие то есть если 2011

381
wordpress ajax отображение content

wordpress ajax отображение content

Задача: есть блок с картинками, которые являются изображениями разных постов WPБлок the content(); скрыт в CSS

421
Не рендерится google maps

Не рендерится google maps

Почему иногда карта не рендерится, а просто серого цветаЧаще всего случается когда сначала открываешь карту toggleRestsMap = false, потом показать...

363
Почему не работает переменная js?

Почему не работает переменная js?

у меня есть переменная var a которую нужно передать в datepicker datesDisabled: a

661