구글 애드센스 승인을 받고 태그를 추가했는데도 광고가 나오지 않아서 크롬에서 F12를 열어보자 콘솔창에서 아래와 같은 에러가 보였습니다.
adsbygoogle.push() error: Only one AdSense head tag supported per page. The second tag is ignored.
제 경우는 처음 태그를 넣었을 때 바로 나오지 않아서 태그 위치를 옮겼는데 기존 태그를 삭제하지 않아서 이런 에러가 발생했습니다. 기존 태그를 삭제하자 문제 없이 광고가 나오기 시작했습니다.
adsbygoogle.push() error: Only one 'enable_page_level_ads' allowed per page.
head 태그 안의 태그를 하나로 줄였는데도 계속 에러가 나는 경우는 수동광고를 넣을 때 script 태크를 포함해서 넣고 있을 가능성이 큽니다. 수동광고를 넣을 때 <script....></script> 태그 부분을 삭제해주면 콘솔의 에러가 나오지 않게 됩니다.
애드센스를 처음 적용할 때 head 태그에 넣는 태그
<haed>
...(다른 태그들 생략)...
//이미 이 script 태그가 들어가 있음
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-xxxxxxxxxxxxxx"
crossorigin="anonymous"></script>
...(다른 태그들 생략)...
</head>
수동 단위 광고를 복사 붙여 넣기 할 때 의 코드
//시작: 이 부분이 중복되어 들어가 있음
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-xxxxxxxxxxx"
crossorigin="anonymous"></script>
//끝: 이 부분이 중복되어 들어가 있음
<ins class="adsbygoogle"
style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-xxxxxxxxxxx"
data-ad-slot="xxxxxxxxxxx"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
기본적으로 자바스크립트의 코드는 위해서 부터 차례대로 읽어 내려 오면서 코드를 동작시킵니다. 같은 코드라면 위에서 한 번만 인식을 하면 됩니다. 중복 될 경우 불필요한 과정이 반복되기 때문에 오히려 로드 속도에 악영향을 미칩니다.(최근에는 컴퓨팅 파워가 발전해서 큰 부담이 되는 것은 아닙니다. 그러니 개인적으로는 이 정도 에러는 크게 신경쓰지 않아도 된다고 생각하지만 빨간 글씨의 에러가 계속 보이는 것은 정신 건강에 해로울 수 있습니다. )
이외에도 adsbygoogle.push() error: 로 시작하는 애드센스 관련 에러가 여러가지 있습니다. 예를 들면 아래와 같은 것이 있습니다.
adsbygoogle.push() error: Fluid responsive ads must be at least 250px wide: availableWidth=0″, name: “TagError”・・・
이 에러는 Adsense 코드를 표시하려는 부분의 폭이 부족하기 때문에 나타납니다.
<div class="adsense example">
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
style="display:block"
data-ad-format="fluid"
data-ad-layout-key="-xxxxxxxxxxxx"
data-ad-client="ca-pub-xxxxxxxxxxxxxxxx"
data-ad-slot="xxxxxxxxx"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
이 경우 대처법은 단순하게 Adsense 코드를 설치한 부모 태그의 width를 지정하기만 하면 됩니다.
/* 단순한 예입니다. 화면의 상황에 따라서 적절하게 조절이 필요합니다. */
.adsense {
width: 400px;
}
만약 부모 태그의 width 설정만으로 문제가 해결되지 않는다면 html 트리 구조상 더 상위의 태그에서 문제가 있을 수 있기 때문에 크롬 개발자 툴 등으로 확인해서 수정할 필요가 있습니다.
adsbygoogle.push() error: No slot size for availableWidth=0″, name: “TagError”・・・
이 에러는 애드센스 코드가 광고를 표시하려고 할 때 부모 태그의 사이즈를 가지고 올 수 없어서 나타나는 에러입니다. 이 경우는 예를 들면 애드센스 광고를 사이드바에도 표시하도록 설정을 했는데 정작 블로그 화면에는 사이드바가 표지 되지 않거나 하는 경우를 생각해볼 수 있습니다.
그러니까 사이드 바에 표시하기 위해서 열심히 대상의 width를 얻으려고 노력하지만 결국 취득하지 못한 것입니다. 이 경우는 Adsense를 사이드 바에는 표시 하지 않도록 설정하는 것으로 수정할 수 있습니다.
또 아래의 대처법으로 해결되는 경우가 있습니다.
원래 이렇게 되어 있던 부분을
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
아래처럼 수정합니다.
<script>
window.onload = function() {
(adsbygoogle = window.adsbygoogle || []).push({});
}
</script>
window.oload를 사용해서 실행을 하게 되면 DOM이 구축된 후 실행되게 됩니다. 이 해결방법이 적용되는 경우는 페이지 내에서 다른 Ajax 처리가 많이 사용되고 있어서 애드센스 코드의 로드가 잘 실행되지 않는 경우에 해당합니다.