我如何调试哪个脚本正在尝试使用地理位置 API?
How can I debug which script is trying to use the Geolocation API?
在我的网站上,我通过 Google 标签管理器加载了一堆跟踪器,包括 Google Analytics 和 Chartbeat,以及一堆 DoubleClick For Publishers (DFP) 广告。
仅在移动设备上,当有人访问我的网站时,他们会收到 "example.com would like to use your location" 通知,但我无法确定是什么试图访问该信息。
如何使用 Firefox 或 Chrome 调试哪个脚本正在尝试使用地理位置 API?
Geolocation API 有一个名为 getCurrentPosition
的函数,这就是被调用的函数。
如果您因为拥有庞大的代码库或发生在客户端库中而不知道该调用发生在何处,则可能很难找到。
一种选择是在“源”面板中搜索解决方案。您可以使用快捷方式 Cmd + Opt + F (Mac) 或Ctrl + Shift + F (Windows), 然后搜索 "geolocation" 或 API 调用的一部分。您应该会在面板中看到结果列表。
另一个有用的解决方案是我喜欢调用的方法 Debugging JavaScript by Redefining Functions。这个想法是存储原始函数的副本,覆盖它并注入您的调试逻辑,然后从当前上下文调用原始函数。
使用这个,我们可以在 getCurrentPosition
函数中注入一个 debugger
语句,这样每当它被调用时,调试器就会中断,你将在 DevTools 中有一个调用堆栈。
var oldGetCurrentPosition = navigator.geolocation.getCurrentPosition;
navigator.geolocation.getCurrentPosition = function() {
debugger;
return oldGetCurrentPosition.apply(this, arguments);
}
我会 运行 在控制台中使用此代码,最好使用代码段,以避免此调试代码出现在生产中。好处是逻辑不会破坏原始代码。
在我的网站上,我通过 Google 标签管理器加载了一堆跟踪器,包括 Google Analytics 和 Chartbeat,以及一堆 DoubleClick For Publishers (DFP) 广告。
仅在移动设备上,当有人访问我的网站时,他们会收到 "example.com would like to use your location" 通知,但我无法确定是什么试图访问该信息。
如何使用 Firefox 或 Chrome 调试哪个脚本正在尝试使用地理位置 API?
Geolocation API 有一个名为 getCurrentPosition
的函数,这就是被调用的函数。
如果您因为拥有庞大的代码库或发生在客户端库中而不知道该调用发生在何处,则可能很难找到。
一种选择是在“源”面板中搜索解决方案。您可以使用快捷方式 Cmd + Opt + F (Mac) 或Ctrl + Shift + F (Windows), 然后搜索 "geolocation" 或 API 调用的一部分。您应该会在面板中看到结果列表。
另一个有用的解决方案是我喜欢调用的方法 Debugging JavaScript by Redefining Functions。这个想法是存储原始函数的副本,覆盖它并注入您的调试逻辑,然后从当前上下文调用原始函数。
使用这个,我们可以在 getCurrentPosition
函数中注入一个 debugger
语句,这样每当它被调用时,调试器就会中断,你将在 DevTools 中有一个调用堆栈。
var oldGetCurrentPosition = navigator.geolocation.getCurrentPosition;
navigator.geolocation.getCurrentPosition = function() {
debugger;
return oldGetCurrentPosition.apply(this, arguments);
}
我会 运行 在控制台中使用此代码,最好使用代码段,以避免此调试代码出现在生产中。好处是逻辑不会破坏原始代码。