Просмотр полной версии : [Greasemonkey] Хук функции
Zero Tolerance
16.06.2017, 18:49
Пишу Greasemonkey скрипт.
Как сделать хук какой-либо функции на странице? Можно даже не перехват, а просто словить событие (postevent), которое будет вызываться после того, как сработала какая-нибудь определенная JS-функция на странице.
Alexandroppolus
16.06.2017, 19:33
обычно функция заменяется на свою, а в своей уже вызывается старый вариант, потом действия какие-то.
Zero Tolerance
16.06.2017, 19:53
обычно функция заменяется на свою, а в своей уже вызывается старый вариант, потом действия какие-то.
Можно пример такой замены?
MallSerg
16.06.2017, 20:01
https://javascript.ru/forum/misc/66405-otlovit-zapusk-funkcii.html
Alexandroppolus
16.06.2017, 20:06
допустим, надо отловить глобальную функцию func1.
делаем так:
(function() {
var win = typeof unsafeWindow == 'undefined' ? window : unsafeWindow;
...
var old_func1 = win.func1; // сохраняем оригинальную функцию
win.func1 = function() {
// тут действия перед вызовом
runActionsBefore(...);
// вызов функции
var result = old_func1.apply(this, arguments);
// действия после вызова
runActionsAfter(...);
return result;
};
})();
Zero Tolerance
16.06.2017, 21:40
https://javascript.ru/forum/misc/66405-otlovit-zapusk-funkcii.html
Пробую этот код для функции setPointer (которая на странице):
setPointer = new Proxy(setPointer, {
apply: function(method, context, args) {
alert("setPointer was invoked");
method();
}
});
Не работает. Если я конечно вызову setPointer() в конце этого кода, то сработает, но само оно не вызывается, что странно, ведь функция setPointer() вызывается на странице.
Zero Tolerance
17.06.2017, 23:45
Решено:
window.recount = function() {
// some code
}
recount — JS-функция на странице.
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot