2014-11-12 2 views
0

Я в настоящее время пытаюсь поместить некоторый код поверх существующей веб-страницы, которую я не могу изменить. Моя цель - «захватить» момент, когда вызывается функция, затем вызвать мой собственный код.Javascript: как зафиксировать момент, когда функция называется

Я вижу два пути, но до сих пор ни одно из моих исследований не нашло ничего.

Способ № 1: поместить какой-либо прослушиватель событий на самой функции, насколько я могу судить, те работают только с объектами DOM, так что это не сработает.

Способ № 2: захватить код функции с помощью функцииName.ToString(), добавить триггер в конец и снова вставить его. Моя проблема в том, что я не могу понять, как переопределить функцию во время работы скрипта.

Это код, который я пытаюсь понять, когда он называется. Он находится в глобальном объекте Tie, который содержит функцию.

Tie.writeChat = function() { 
    this.ctiming = baseChatUpdate; 
    clearTimeout(this.chatSlow); 
    this.chatSlow = setTimeout(function() { 
     Tie.ctiming = 60 * 1 * 1000; 
     console.log("Slow chat"); 
    }, 60 * 15 * 1000); 
    var msg = Tie.enc(Tie.id("chatmsg").value); 
    var c = Tie.id("change").innerHTML; 

    if (msg != "") { 
     Tie.request("write.php", "msg: " + msg + ", c: " + c); 
     Tie.id("chatmsg").value = ""; 
    } 
} 

У кого-нибудь есть идеи?

Спасибо.

+0

Любые намеки на объем функция определяется и называется сегодня? Является ли он глобальным (например, 'window.myFun'), частным для модуля и т. Д. –

+0

Обновлено с этим, это то, что вы хотели? – Munsta0

+0

Это помогает, но он не совсем отвечает запрошенным разъяснениям. Является ли 'Tie' глобальным/доступным как' window.Tie'? Где находится ссылка «Tie.writeChat»? – icktoofay

ответ

1

Если Tie глобальна:

Tie.oldwriteChat = Tie.writeChat; 
Tie.writeChat = function(){ 
    alert("Tie.writeChat is called"); 
    this.oldwriteChat(); 
}; 
+0

О, да, я действительно думал об этом, это отлично выглядит – Munsta0

Смежные вопросы