使我的浏览器调试器在地理位置上中断

时间:2014-11-04 22:29:16

标签: javascript geolocation firebug google-chrome-devtools breakpoints

我正在访问一个网站,要求我分享我的位置。我想知道他们正在对这些信息做些什么以及它在哪里发送。我试着查看页面的JavaScript代码,希望找到涉及地理位置的东西,但是有很多代码,并且它被混淆了。

是否可以在我的浏览器的内置navigator.geolocation.getCurrentPositionnavigator.geolocation.watchPosition函数中放置一个断点,以便在调用任何这些函数时,我可以查看调用堆栈,看看调用的是什么那些函数,也许找到回调函数,以便我可以检查它们?

我更喜欢在Firebug中运行的东西,但我会很高兴能够使用Firefox,Chrome或Safari中内置的开发人员工具。

1 个答案:

答案 0 :(得分:2)

我找不到任何方法可以在Chrome中使用geolocation API,但您可以使用一种技术来补充您要调试的函数,使用另一个执行某些自定义代码的函数,然后再继续调用预期的功能。

以下是填充getCurrentPosition函数的示例。

var getCurrentPosition = navigator.geolocation.getCurrentPosition;
navigator.geolocation.getCurrentPosition = function(){
    debugger;
    getCurrentPosition.apply(navigator.geolocation, arguments);
}

在这个例子中,我将真实API复制到局部变量,调用debugger语句(有效设置断点),然后调用真实函数。现在,当混淆代码调用navigator.geolocation.getCurrentPosition(...)时,Chrome调试器将在debugger行打开,您可以查看调用堆栈。

或者,您可以console.trace或其他任何事情。

var getCurrentPosition = navigator.geolocation.getCurrentPosition;
navigator.geolocation.getCurrentPosition = function(){
    console.trace();
    getCurrentPosition.apply(navigator.geolocation, arguments);
}

注意,您需要在调用navigator.geolocation.getCurrentPosition或将其分配给变量之前的某处设置断点。代码的第一行应该没问题。