@NooBick

Как через userscripts запретить внедрение JavaScript от сайта?

Как через userscripts запретить внедрение JavaScript от сайта?

У меня есть сайт вконтакте, там есть button - отправить сообщение.
6118bc105f25f011844894.png

Мне надо, чтобы при нажатии на это кнопку, срабатывал мой код, а не код сайта. Если просто отменить запрос к серверу к этому javascript'у, то весь функционал сайта работать не будет. Мне же надо как-то подменить тело ответа, а точнее после выполнение запроса, не много изменить данный javascript. chrome.webRequest, так не может. Тогда я решил просто в начале загрузки страницы, удалить подгрузку этого скрипта, но и этого у меня не вышло, браузер быстрее моего расширения подключает этот JavaScript.

Тогда мой взгляд упал на userscripts. И может как-то через него, можно удалить из html подгрузку скрипта, чтобы вставить мой скрипт. Или всё таки можно как-то изменить тело ответа, чтобы я мог отредактировать javascript, который присылает сервер?

Короче, со всеми этим уже парюсь около 5 дней. Хочу уже решить эту проблему. А для этого, мне мешает лишь один серверный JavaScript код.
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
WblCHA
@WblCHA
На элемент, где висит обработчик событий, тебе надо повесить:
.addEventListener('click', event => {
  event.stopPropagation()
  ...
}, true);

Третим аргументом обязательно передать true ( https://developer.mozilla.org/ru/docs/Web/API/Even... ).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Вы можете легко переписать скрипты ВКонтакте на свои через контент-скрипт / UserScript, просто объявляете свою функцию и она тупо заменит функцию от ВКонтакте.

Пример объявления функции test() через контент-скрипт / UserScript:
var script = document.createElement('script');
script.innerHTML = `function test() {
    // Ваш код
}`;
document.head.appendChild(script);

Разумеется объявлять надо уже после прогрузки скриптов от ВКонтакте, для этого используйте событие load.

P. S. Осталось вам лишь найти функцию от ВКонтакте отвечающую за отправку данных) Для этого исследуйте обработчики, которые на кнопке висят при помощи инспектора хрома.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы