0

在我的网站上,我通过Google跟踪代码管理器加载了一堆跟踪器,其中包括Google Analytics和Chartbeat,以及一些DFP广告管理系统广告。如何调试哪个脚本尝试使用Geolocation API?

仅在移动设备上,当有人访问我的网站时,他们会得到“example.com想使用您的位置”通知,但我无法确定尝试访问该信息的内容。

如何调试哪个脚本尝试使用Firefox或Chrome使用Geolocation API?

回答

2

Geolocation API有一个函数叫做getCurrentPosition,这就是调用的函数。

如果您不知道调用发生在哪里,因为您有大量的代码库,或者发生在客户端库中,那么可能很难找到。

一个选项是在“来源”面板中搜索解决方案。为此,您可以使用快捷Cmd的 + 选项 + ˚F(Mac)或按Ctrl + + ˚F(Windows)中,然后搜索 “地理位置” 或API调用的一部分。您应该在面板中看到结果列表。

另一个有用的解决方案是我喜欢打电话给Debugging JavaScript by Redefining Functions的方法。这个想法是存储一个原始函数的副本,覆盖它并注入调试逻辑,然后从当前上下文中调用原始函数。

使用这个,我们可以在getCurrentPosition函数中注入一个debugger语句,这样每当它被调用时,调试器就会中断,你将在DevTools中有一个调用堆栈。

var oldGetCurrentPosition = navigator.geolocation.getCurrentPosition; 

navigator.geolocation.getCurrentPosition = function() { 
    debugger; 
    return oldGetCurrentPosition.apply(this, arguments); 
} 

我将在控制台运行此,使用片段优选地,以避免出现在生产此调试代码。好的是逻辑不破坏原始代码,如果它。