Skip to content

Instantly share code, notes, and snippets.

@FlyInk13
Last active January 6, 2018 19:03
Show Gist options
  • Save FlyInk13/aad0ad9ccfa0bd54d69d930105eb9ba7 to your computer and use it in GitHub Desktop.
Save FlyInk13/aad0ad9ccfa0bd54d69d930105eb9ba7 to your computer and use it in GitHub Desktop.
Пример скрипта изменяющего функции и запросы vk.com!
// ==UserScript==
// @name VK editor
// @namespace http://tampermonkey.net/
// @version 0.2
// @description Пример скрипта изменяющего функции и запросы vk.com!
// @author Flyink13
// @match https://vk.com/*
// @grant none
// ==/UserScript==
function IncludeFunction() { // Обертка для выполнения в скрипта контексте страницы
mention_edit = function(tip) { // Функция внедряемая в отрисовку меншона
tip.container.querySelector(".mention_tt_data").appendChild(ce("div", {
textContent: "MID: " + tip.opts.params.mention
})); // Добавляем что-нибудь в контейнер
console.log(tip); // Логируем
};
mention_res_edit = function(a) { // Изменяем ответ сервера
a[1] = a[1].replace("tip.img = ", "mention_edit(tip);\ntip.img = "); // Внедряем функцию
return a; // отдаем arguments
};
function addEditor(opts) { // Функция создания обертки для изменения запросов и ответов
if (typeof opts == "function") // для inline записи
opts = {
func: opts,
argsEditor: arguments[1],
resEditor: arguments[2]
};
return function edited_function() { // Создаем обертку
if (opts.argsEditor) arguments = opts.argsEditor(arguments); // Изменяем параметры запуска функции
var res = opts.func.apply(opts.context || this, arguments); // Выполняем оригинальную функцию
if (opts.resEditor) res = opts.resEditor(res); // Изменяем ответ функции
return res; // Отдаем
};
}
post_req_editor = function(a) { // Изменяем параметры запроса
if (a[0] == "al_wall.php" && a[1].act == "mention_tt") // Если запрос на получение меншона
a[2].onDone = addEditor(a[2].onDone, mention_res_edit); // То изменяем его
return a; // отдаем arguments
};
ajax.post = addEditor(ajax.post, post_req_editor); // Внедряем измение запросов в функцию выполения запросов
}
window.addEventListener("load", function() { // Ждем загрузки страницы
var script = document.createElement('script'); // создаем dom скрипта
script.appendChild(document.createTextNode('(' + IncludeFunction + ')();')); // Вкладываем самовызов IncludeFunction
(document.body || document.head || document.documentElement).appendChild(script); // Добавляем
script.outerHTML = ""; // Убираем
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment