我想写一个Chrome扩展,它可以与特定的基于JS的聊天应用程序一起使用。每次聊天收到消息时,都需要意识到这一点。
现在,我显然可以通过设置计时器并检查$("chat-messages").childElements().length
是否增加来轻松地做到这一点,但我更愿意采用更优雅的方法,即设置某种事件处理程序,以便在每次调用appendChatMessage()
时触发。有办法做到这一点吗?
var oldfunc = appendChatMessage;
appendChatMessage = function() { eval(oldfunc); myChatMessageReceivedHandler(); }
似乎不起作用。
如果有一个方法appendChatMessage
在每次新消息到达时都会被调用,那么您可以这样做
var old = appendChatMessage;
appendChatMessage = function() {
// call the initial method and store the result
var result = old.apply( this, arguments );
// do your stuff here
// return the initial result
return result;
};
您必须执行oldfunc()
。除此之外,我会为创建一个事件
var oldfunc = appendChatMessage;
appendChatMessage = function() { oldfunc(); $(document).trigger("msg_received"); }
$(document).bind("msg_received", function(params){
//do your logic when message arrives
});
您应该决定将事件附加到哪个元素及其参数中。
希望这能有所帮助。干杯
var oldfunc=appendChatMessage;appendChatMessage=function(({eval(oldfunc((;myChatMessageReceivedHandler((;}
应该有效,这取决于上下文。
var f = function () { console.log('foo'); }
var f2 = f;
f = function () { f2(); console.log('bar'); }
这应该打印:
foo
bar