0

내 웹 사이트에는 Google 애널리틱스와 Chartbeat를 비롯하여 Google 태그 관리자를 통해 많은 수의 추적 광고가로드되며 DFP (DoubleClick For Publishers) 광고도 포함되어 있습니다.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); 
} 

이 디버깅 코드가 프로덕션에 표시되지 않도록 콘솔에서 스 니펫을 사용하는 것이 좋습니다. 좋은 점은 논리가 원래 코드를 깨뜨리지 않는다는 것입니다.