私はいくつかのhtmlで次のJavaScriptを持っています。デモのサンプルは次のURLにあります:http://js.do/sun21170/92329JavaScriptまたはjQueryの関数の最後に動的にコードを追加します
私の野心的な目標はの部分の直後にdoSomething
の機能の一部を実行することです。 私はを使用しているライブラリにあるので、この関数の中身は何も制御していませんが、最後のコード行がこの関数で実行された後にいくつかのコードを実行します。だから、doSomething
関数の最後にJavaScriptコードを動的に挿入したいのと同じです。
質問:doSomething
のコードの最後の行の後にコードを動的に挿入することはできますか?はいの場合はどうすればよいですか?
たとえば、カスタムコードの次の行を挿入したいとします。alert(val);
または変数にアクセスしていない場合は、alert("hello");
のような他のカスタムコードを挿入します。私はコールバック関数の本体を取得しようとし、私は私の新しいコードを追加することができると思うが、まだ私の非常に一般的な要件を実装することはできません。
<button type="button" onclick="callback(200);">Callback gets called </button>
<script>
var callback = null;
//the function below cannot be changed
function doSomething(val) {
if (val > 150) {
alert("You are not eligible for this reward");
} else {
alert("Congrats! You have just been rewarded");
}
}
//set callback to something
callback = doSomething;
//I want to automatically execute some code when callback finishes execution without
//having to explicitly write that code within the doSomething function OR
//writing code after doSomething function is called in onclick function of button
//If this is possible, HOW WOULD I IMPLEMENT THIS?
//I can get the body of a function using below code
function getCallBackBody(callbackFunction) {
var entire = callbackFunction.toString();
var body = entire.substring(entire.indexOf("{") + 1, entire.lastIndexOf("}"));
return body;
}
</script>
あなたが関数内の変数にアクセスする必要があるので、あなたはこれをやっていますか?あるいは、関数の後に*コードを実行したいだけですが、その関数の呼び出しを変更する必要はありません。 – James
@James、元のコールバックの最後の行が終了したときにカスタムコードを正確に実行したいので、これが必要です。したがって、メソッド内の変数にアクセスする必要はありません。私はこの余分な説明を私の元の質問に加えました。それをもっと詳細にしてくれてありがとう。 – Sunil
いいえ、これは不可能です。ただし、プラグイン/ライブラリが使用しているものを上書きできるように、その関数が格納されている場所にアクセスできる場合は、その関数を置き換える/ラップすることができます。 –