알짜게시판

[HTML] 애드센스 충돌 문제 해결하기

블로그 운영자라면 한 번쯤은 경험하는 문제가 있습니다. 바로 애드센스 광고가 정상적으로 뜨지 않거나, 콘솔에 에러가 발생하는 경우입니다. 특히 postMessage와 관련된 오류는 자바스크립트 코드와 애드센스 광고 스크립트가 충돌해서 발생할 수 있습니다. 이 글에서는 그 원인과 해결 방법을 정리했습니다.


애드센스 광고가 뜨지 않는 이유

애드센스 광고가 표시되지 않는 원인은 크게 두 가지로 나눌 수 있습니다.

  • 애드센스 계정, 정책, 광고 재고 문제로 인해 광고가 차단된 경우
  • 자바스크립트 코드에서 애드센스가 보내는 메시지를 잘못 처리해 충돌이 생기는 경우

첫 번째는 구글의 정책이나 계정 상태를 점검해야 하고, 두 번째는 우리가 직접 수정할 수 있습니다.


postMessage와 애드센스

애드센스는 광고를 iframe으로 불러옵니다. 이때 광고 스크립트는 postMessage API를 통해 브라우저와 통신합니다. 문제는 페이지에 등록된 message 이벤트 리스너가 이 메시지를 무조건 처리하려고 하면, 비JSON 데이터JSON.parse 하면서 에러가 발생한다는 점입니다. 이 때문에 광고가 중단되거나 화면에 노출되지 않는 현상이 생깁니다.


최종 코드

이 문제를 피하기 위해 메시지 수신 코드를 간단하게 작성할 수 있습니다. 출처(origin)를 체크해서 내 사이트가 보낸 메시지만 처리하도록 하는 방식입니다.

function recvApp(e)
{
    if (e.origin && e.origin !== window.location.origin) {
        return;
    }

    var json = JSON.parse(e.data);

    ...
}

window.addEventListener('message', recvApp);

코드 설명

  • if (e.origin && e.origin !== window.location.origin)
    현재 페이지의 출처와 다른 곳에서 보낸 메시지는 모두 무시합니다.
  • JSON.parse(e.data)
    메시지를 JSON 객체로 변환합니다. 내 사이트에서 보낸 메시지만 처리하도록 제한했기 때문에 충돌을 줄일 수 있습니다.

정리

애드센스와 같은 광고 스크립트는 기본적으로 postMessage를 사용합니다. 따라서 메시지 처리 코드를 작성할 때는 반드시 출처를 확인하고, 내 사이트에서 보낸 메시지만 다루는 것이 안전합니다. 위와 같이 코드를 수정하면 애드센스와의 충돌로 인한 오류를 막고 광고 노출 문제도 예방할 수 있습니다.

로그인 후 댓글내용을 입력해주세요

제목 글쓴이 조회 날짜
[HTML] 애드센스 충돌 문제 해결하기 108 12:42
[파이썬] Python Playwright로 Edge 브라우저 제어하기 12,918 09-12
[델파이] TDirectory.Delete 대신 CMD 으로 폴더 삭제 15,741 09-10
[윈도우] Chrome 및 Edge를 TLS 1.2 모드로 실행 32,967 08-30
[HTML] 애드센스 자동 광고 사용 시 빈 화면이 출력된다면? 122,546 06-20
[윈도우] 브라우저 환경설정 추출 124,308 06-18
[워드프레스] xmlrpc.php 차단으로 보안 강화하기 135,932 06-05
[델파이] 폼이 모니터 한 가운데 있는 경우 자연스럽게 왼쪽으로 이동시키기 133,515 05-26
[윈도우] WSH script registration is not valid. 133,617 05-23
[워드프레스] 제목 블록 기본값을 H5로 변경하는 방법 115,084 05-22
[파이썬] 동영상 특정 영역 모자이크(흐리게) 하기 46,706 04-30
[리눅스] 구글 크롬 콘솔 'Attestation check for Topics on' 에러 원인 & 해결방… 59,787 04-11
[크롬] 개발자 도구(DevTools)에서 붙여넣기 안될때 72,011 03-10
[그누보드] SmartEditor2Skin.html 다운로드 되는 현상 110,037 01-08
[윈도우] 네트워크 탐지 114,081 12-31
[델파이] TrayIcon 이 흐릿하게 보이는 버그? 수정 128,009 12-12
[델파이] 실행 중인 프로세스가 활성 창인지 확인하는 함수 145,323 11-02
[델파이] 메세지 다이어그램(Message Dialog) 에 체크박스(CheckBox) 추가 132,237 10-30
[그누보드] 부트스트랩 테마 예제로 사용중인 main.php 115,562 10-21
[그누보드] 유튜브 스킨 74,911 10-14
[윈도우] TLS 연결 끊김 해결 방법 - Kyber 비활성화 237,494 10-12
[PHP] 검색 로봇 접속시 종료 56,327 10-07
[윈도우] WinDivert 사용중인 어플리케이션 검색 45,325 09-12
[워드프레스] 답글 남기기 메시지 변경 42,784 09-05
[리눅스] PHP-FPM 튜닝을 위한 메모리 계산 41,348 08-29
[윈도우] 아이폰 벨소리 쉽게 추가하기 94,232 06-14
[윈도우] C:\Windows\Installer 폴더 다른 드라이브로 옮기기 104,902 05-29
[윈도우] 작업 표시줄 (기타 시스템 트레이 아이콘) 제거 프로그램 180,997 05-18
[워드프레스] cdn.jsdelivr.net 에서 ssl 인증서 오류 문제 102,207 05-02
[그누보드] cdn.jsdelivr.net 에서 ssl 인증서 오류 문제 97,706 05-02
[PHP] REQUEST 값 받기(application/json 포함) 99,247 04-20
사주클럽결혼의신최신 IT 기술과 개발 팁 자료주방연구소다양한 잡학 지식과 TMI 모음