呼び出し元 (コール スタックの前者) 関数であった JavaScript 関数を調べるにはどうすればよいですか?
前に呼び出された関数が onbeforeunload イベントで __doPostback であるかどうかを判断したいと思います。
呼び出し元 (コール スタックの前者) 関数であった JavaScript 関数を調べるにはどうすればよいですか?
前に呼び出された関数が onbeforeunload イベントで __doPostback であるかどうかを判断したいと思います。
各関数にはcaller
プロパティが定義されています。
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/callerから:
function myFunc() {
if (myFunc.caller == null) {
return ("The function was called from the top!");
} else
return ("This function's caller was " + myFunc.caller);
}
}
このFunction.caller
プロパティは ECMA3 標準の一部ではありませんが、IE や Firefox を含むすべての主要なブラウザーに実装されています。
匿名関数を使用している場合でも、caller
プロパティを介してarguments.calee
プロパティにアクセスできます。
function() {
if (arguments.callee.caller == null) {
return ("The function was called from the top!");
} else
return ("This function's caller was " + arguments.callee.caller);
}
}
このコードは現在の関数にアクセスしており、同じ非標準caller
プロパティを参照していることに注意してください。これは、一部の最新のブラウザーでは実装されていない非推奨 arguments.caller
のプロパティを直接使用することとは異なります。
cr-48 の chromeos では、arguments.callee.caller は、両方の名前付き匿名呼び出し元関数に対して、関数本体全体を文字列として提供します。