繁体   English   中英

如何调试哪个脚本试图使用Geolocation API?

[英]How can I debug which script is trying to use the Geolocation API?

在我的网站上,我通过Google跟踪代码管理器(包括Google Analytics(分析)和Chartbeat)加载了一堆跟踪器,以及一堆DoubleClick For Publishers(DFP)广告。

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

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

Geolocation API有一个名为getCurrentPosition的函数,即被调用的函数。

如果您不知道调用的位置是因为代码库很大,还是在客户端库中进行,那么很难找到它。

一种选择是在“源”面板中搜索解决方案。 您可以使用快捷键Cmd + Opt + F (Mac)或Ctrl + Shift + F (Windows)来执行此操作,然后搜索“地理位置”或API调用的一部分。 您应该在面板中看到结果列表。

另一个有用的解决方案是我喜欢通过重新定义函数来调用Debugging JavaScript的方法。 这个想法是存储原始函数的副本,覆盖它并注入调试逻辑,然后从当前上下文中调用原始函数。

使用此方法,我们可以将debugger语句注入到getCurrentPosition函数中,以便每当调用该语句时,调试器都会中断,并且您将在DevTools中拥有调用堆栈。

var oldGetCurrentPosition = navigator.geolocation.getCurrentPosition;

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

我将在控制台中运行此程序,最好使用一个Snippet,以避免此调试代码出现在生产环境中。 好处是逻辑不会破坏原始代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM