我正在访问一个网站,要求我分享我的位置。我想知道他们在处理这些信息以及将其发送到何处。我尝试查看该页面的JavaScript代码,希望找到一些涉及地理位置的内容,但是有很多代码,而且这些代码被混淆了。

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

我希望可以在Firebug中使用的东西,但对于可以与Firefox,Chrome或Safari中内置的开发人员工具一起使用的东西感到满意。

最佳答案

我找不到在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或将其分配给变量之前,您需要在某处设置断点。代码的第一行应该没问题。

关于javascript - 使我的浏览器调试器在地理位置上中断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26746270/

10-11 04:04