2011-07-03 13 views
0

特定のJSベースのチャットアプリケーションで動作するChrome拡張機能を作成したいと考えています。チャットがメッセージを受信するたびにそれを認識させる必要があります。任意のJS関数でイベントハンドラを設定しますか?

今、私は明らかにタイマーを設定し、$("chat-messages").childElements().lengthが増加しているかどうかを確認することでこれを簡単に行うことができますが、毎回何らかのイベントハンドラを設定するより洗練された方法appendChatMessage()が呼び出されます。これを行う方法はありますか?

var oldfunc = appendChatMessage; 
appendChatMessage = function() { eval(oldfunc); myChatMessageReceivedHandler(); } 

動作していないようです。

+0

「jquery」とタグ付けする必要がありますか? –

+0

@Kerrek:jQueryとはあまり関係がありませんが、利用可能なので、私はそれを再タグ付けしました。 – Ryan

答えて

1
var oldfunc = appendChatMessage; 
appendChatMessage = function() { eval(oldfunc(); myChatMessageReceivedHandler(); }

コンテキストに応じて動作します。

+0

これは自分の関数で動作しますが、チャット関数で試してみると次のようになります: 未知の型エラー:未定義のメソッド 'preventDefault'を呼び出せません –

+0

woops!愚かな私。 oldfunc()に必要な引数を送信するのを忘れていました。 –

0
var f = function() { console.log('foo'); } 

var f2 = f; 

f = function() { f2(); console.log('bar'); } 

これは印刷する必要があります:

foo

bar

2

新しいメッセージが到着するたびに呼び出されるメソッド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; 
}; 
のように行うことができます
2

あなたがする必要がありますoldfunc()。それ以外にも、私はそのイベントを作成したいと思っています。

var oldfunc = appendChatMessage; 
appendChatMessage = function() { oldfunc(); $(document).trigger("msg_received"); } 

$(document).bind("msg_received", function(params){ 
    //do your logic when message arrives 
}); 

イベントとそのパラメータを添付する要素を決定する必要があります。

これが役に立ちます。歓声

関連する問題