如何检测呼叫者的呼叫者功能和位置

时间:2014-12-09 11:49:37

标签: javascript

我正在尝试检测来电功能及其来源。

例如:

假设我们在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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以在Chrome的调试器中查看调用堆栈。 只需在覆盖的函数中添加断点并调用它,然后就可以跟踪调用者js文件。 附上截图  http://i.stack.imgur.com/aAlKp.png 编辑,如果要在控制台上打印它 尝试   console.log((new Error).stack);