确定javascript中的调用函数
可能重复:确定javascript中的调用函数,javascript,function,callstack,Javascript,Function,Callstack,可能重复: 如何在javascript函数中找出调用(调用堆栈中的前一个)函数 我想确定前一个调用的函数是否是onbeforeunload事件中的u doPostback。每个函数都定义了一个调用方属性 发件人: Function.caller属性不是ECMA3标准的一部分,但它在所有主要浏览器中都有实现,包括IE和Firefox 如果您使用的是匿名函数,您仍然可以通过以下属性访问调用者属性: function() { if (arguments.callee.caller == nu
如何在javascript函数中找出调用(调用堆栈中的前一个)函数
我想确定前一个调用的函数是否是onbeforeunload事件中的u doPostback。每个函数都定义了一个调用方属性 发件人:
Function.caller
属性不是ECMA3标准的一部分,但它在所有主要浏览器中都有实现,包括IE和Firefox
如果您使用的是匿名函数,您仍然可以通过以下属性访问调用者
属性:
function() {
if (arguments.callee.caller == null) {
return ("The function was called from the top!");
} else
return ("This function's caller was " + arguments.callee.caller);
}
}
请注意,此代码正在访问当前函数,然后在其上引用相同的非标准
调用者属性。这与直接使用弃用属性不同,后者在某些现代浏览器中没有实现。在cr-48上的chromeos中,arguments.callee.caller将整个函数体作为字符串提供给两个命名的匿名调用函数 请注意,caller
是一个非标准属性。你的里程数可能因浏览器而异。确实是非标准属性,但IE中有类似的东西吗?它应该只在IE中为我的客户端工作,Firefox不受支持。caller
不是ECMA3标准的一部分,但它在所有主要浏览器中都有实现:IE、Firefox、Safari。在IE中使用应该是安全的。我已经编辑了我的回复以涵盖非标准争用,并添加了更多关于获取匿名函数调用方的信息。仅供参考,刚刚测试了调用方
。正如詹姆斯所说,他们得到了很好的支持。在FF3.5、IE7、Chrome2、Safari4上演示并更正(均在Windows上)。Opera9是一个很奇怪的版本,并且已经严重损坏:它有属性,但它指的是被调用方,而不是调用方!(吓人)这里的测试页面:如何获取调用方的名称?@Umairarguments.callee.caller.name
function() {
if (arguments.callee.caller == null) {
return ("The function was called from the top!");
} else
return ("This function's caller was " + arguments.callee.caller);
}
}