我正在尝试检测来电功能及其来源。
例如:
假设我们在HTML内容上有以下行。
<script src="/somefunc.js"></script>
以下函数位于somefunc.js
exampleFunction = function(){
var f = document.getElementById("hello")
}
如您所见,exampleFunction正在调用getElementById()函数。为了检测那些调用,我用以下代码覆盖了getElemenyById()。
document._oldGetElementById = document.getElementById;
document.getElementById = function(elemIdOrName) {
var result = document._oldGetElementById(elemIdOrName);
if (! result) {
var elems = document.getElementsByName(elemIdOrName);
if (elems && elems.length > 0) {
result = elems[0];
}
}
console.log("someone called me! Caller function = "+arguments.callee.caller);
return result;
};
但我无法获得功能调用者的信息以及它的位置是什么?我的意思是我希望得到如下输出的信息。
Caller = exampleFunction
Caller location = site.com/somefunc.js
有什么想法吗?
答案 0 :(得分:0)
您可以在Chrome的调试器中查看调用堆栈。 只需在覆盖的函数中添加断点并调用它,然后就可以跟踪调用者js文件。 附上截图 http://i.stack.imgur.com/aAlKp.png 编辑,如果要在控制台上打印它 尝试 console.log((new Error).stack);