2011-01-27 13 views
1

注射スクリプトでjavascriptの機能を変更/拡張するにはどうすればよいですか?

function foo(param){ 
// original works 
} 

...この機能を言うことができますHTMLドキュメントにインプレースすでにあります。

ドキュメントに外部スクリプトを挿入するブックマークレットがあります。そのスクリプトから、私は、注入されたスクリプトの新しい機能である)(...これに

function foo(param){ 
// original works 
bar(param); 
} 

バーのfoo()関数の動作を変更したいです。 私は注入されたスクリプトでfooを複製することに問題はありません。

どうすればよいですか?

答えて

2

javascriptのすべては、関数を含むオブジェクトにすることができます。このことを念頭に、古い機能の複製を作成することができ、重複参照しながら、その後、新しいものをオーバーライドします。

function foo(param){ 
// original works 
} 

var old_foo = foo; 

function foo(param) { 
old_foo(param); 
bar(param); 
} 
+0

私はなぜ、私はこれに似た何かをテストしていたか分からないのと、おっと例外:* RangeError:新しいfooを実行したときの最大呼び出しスタックサイズを超えました。 PS:+1。 – JCOC611

+2

@ JCOC611それは... <サングラスを置く> ... StackOverflow? YEEEEEaaaaaah! –

+3

old_foo()の戻り値を格納し、それを新しいfoo()?から返す方が正しいでしょうか? 'function foo(param){var ret = old_foo(param); bar(param); return ret;} ' – david

関連する問題