javascript 関数がブラウザのコンソールまたはソース コードから呼び出されているかどうかを確認する方法があるかどうかを知りたいです。
コンソールからかページからかを確認できる関数を定義しましたが、Google Chrome でのみ機能し、Firefox では機能しません。他のブラウザーはテストしていません。
function fromConsole()
{
var Caller = arguments.callee.caller;
while(Caller.caller != null)
Caller = Caller.caller;
return (Caller.toString().indexOf("function (expression, objectGroup,"))!=-1;
}
この機能のしくみ
この関数は、関数を呼び出した最上位の関数を探します。google chrome では、コンソールから呼び出されるトップ関数の定義に、function (expression, objectGroup,
firefox でこの文字列が含まれている場合、関数はありません
詳しくご説明いたします
この例があるとしましょう
function a()
{
b();
}
function b()
{
return c();
}
function c()
{
console.log(fromConsole());
}
ページから関数 a() を呼び出すと、コンソールに false と表示されます (最上位の関数が a() であるため) function (expression, objectGroup,...
。
Firefox では、関数をコンソールから呼び出してもページから呼び出しても、最上位の関数は常に a() です。
私の質問は: 関数がコンソールから呼び出されたかどうかを知る方法はありますか?