javascript - 如何调试哪个脚本正在尝试使用 Geolocation API?

标签 javascript html geolocation google-chrome-devtools firefox-developer-tools

在我的网站上,我有大量通过 Google 跟踪代码管理器加载的跟踪器,包括 Google Analytics 和 Chartbeat,以及大量 DFP 广告管理系统 (DFP) 广告。

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

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

最佳答案

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

如果您不知道该调用发生在哪里,因为您有一个庞大的代码库,或者它发生在客户端库中,则可能很难找到。

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

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

使用这个,我们可以将一个debugger语句注入(inject)到getCurrentPosition函数中,这样每当它被调用时,调试器就会中断,并且您将在其中有一个调用堆栈开发工具。

var oldGetCurrentPosition = navigator.geolocation.getCurrentPosition;

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

我会在控制台中运行它,最好使用代码片段,以避免此调试代码出现在生产中。好处是逻辑即使破坏了原始代码也不会破坏。

关于javascript - 如何调试哪个脚本正在尝试使用 Geolocation API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39045752/

相关文章:

javascript - 无法使用php在表中插入数据

javascript - 无法使 document.GetElementById 正常工作

html - 使用表格设计博客?

swift - 适用于 iOS 的地理围栏

javascript - 建立地理定位照片索引——爬网还是依赖现有的 API?

javascript - 如何确定 javascript 脚本中的解释器类型?

javascript - 何时使用 JavaScript 中的函数?

javascript - 如何从文本区域中选择某些内容。创建我的编辑器

javascript - XML 解析意外行为 LiScroll

python - 如何使用geopy从坐标中获取邮政编码?