我正在访问一个网站,要求我分享我的位置。我想知道他们在处理这些信息以及将其发送到何处。我尝试查看该页面的JavaScript代码,希望找到一些涉及地理位置的内容,但是有很多代码,而且这些代码被混淆了。
是否可以在浏览器的内置navigator.geolocation.getCurrentPosition
或navigator.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/