2011-02-19 3 views
1

사용자가 어떤 종류의 광고 차단기를 설치하면 광고 차단기는 물론 내 웹 사이트의 모든 광고를 제거하고 광고가 있던 곳에 빈 공간을 남깁니다. 애드 센스 자바 스크립트가로드되었는지 여부를 알아야 할 경우, 내 웹 사이트의 가장 중요한 페이지에 대한 링크와 같은 다른 콘텐츠를 넣어서 빈 공간을 사용하고 싶습니다. 내가 지금까지 시도애드 센스 광고가 차단되었는지 어떻게 알 수 있습니까?

방법 :

if (!document.getElementById("google_ads_frame1")) 
{ 
} 

하고 :

if (typeof(window.google_render_ad) == "undefined") 
{ 
} 

그 모두가 특정 상황에서 실패하는 것, 예를 들어, 만약 조금 느린 파일 자바 스크립트 브라우저 다운로드 애드 센스, 애드 센스 코드가로드되기 전에 위에서 언급 한 코드를 실행하고 광고가 차단되지 않은 사용자에 대해서도 광고를 숨길 수 있습니다.

내 코드가 애드 센스 후에 실행되는지 어떻게 확인할 수 있습니까? 아니면 애드 센스 스크립트가로드되지 않았는지 감지하는 다른 방법은 있습니까?

+0

:

이 예제에 대한 설명서를 참조하십시오 http://stackoverflow.com/questions/4869154/how-to-detect-adblock-on-my-website –

답변

2

이 코드는 window.onload 이벤트에서 실행하십시오. window.onload 페이지로드가 완료되면 이벤트가 시작됩니다.

window.onload = function() { 
    // your checks 
} 

당신이 jQuery를 사용하는 경우, 내가 이전에 생각했던대로 그 문제는 타이밍이 아니 었 실현 좀 더 테스트 후

$(window).load(function() { 
    // your checks 
}); 
+2

귀하의 jQuery 예는 속기는'$입니다 (document) .ready()'를 호출하고, 이는'window.onload' 전에 ​​실행됩니다. jQuery를 사용하여'$ (window) .load (fn)'를 통해'window.onload' 핸들러를 첨부 할 수 있습니다. –

+0

@Dave Ward, 아 맞습니다. 고마워요 :) – Dogbert

+0

그래, 그 질문을하기 전에 시도하지 않는 바보 같은 느낌이 작동합니다. 예 : –

0

를 사용합니다. 애드 센스에서 새로운 코드를 사용하기 시작한 데 문제가있었습니다.이 코드에는 'google_render_ad'기능이 없으며 ID가 'google_ads_frame1'인 iframe을 만들지 않습니다 (새 ID는 'aswift_0'임).

if (document.getElementsByTagName("iframe").length === 0) 
{ 
    // ad is blocked 
} 
+3

FB Like, Gplus +1 또는 이와 유사한 것을 사용하는 경우 페이지에 많은 iframe이 있습니다. – Omiod

3

새로운 애드 센스 코드를 사용하는 경우, 당신은 쉽게 작업을 수행 할 수 있습니다 애드 센스가 지금은 관계없이 ID 단지 iframe 요소의 존재를 확인 새 감지 코드를 만든 iframe을 위해 적어도 두 개의 서로 다른 ID를 사용하는 것을 고려 확인, 콘텐츠 또는 CSS 수표에 의존하지 않고. 마크 업에서 정상적으로

장소 광고 :합니다 (adsbygoogle.js 스크립트를 호출 할 때 "async" 플래그를 사용하지 마십시오)

<ins class="adsbygoogle" style="display: block;" 
    data-ad-client="ca-pub-######" 
    data-ad-slot="#######" 
    data-ad-format="auto"></ins> 
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script> 

그런 다음 페이지의 하단의 애드 센스 코드를 호출 :

<script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> 

그런 다음 아래 코드의이 작은 조각을 추가

<script> 
if (!adsbygoogle.loaded) { 
    // do something to alert the user 
} 
</script> 

애드 센스는 광고가로드 될 때 항상 adsbygoogle.loaded ~ true 플래그를 생성/설정합니다. 체크를 setTimeout 함수에 넣으면 수초가 지연됩니다.

+1

이것은 upvoted 대답이어야합니다. setTimeout을 언급하는 것에 대한 명성. setTimeout 내부자에게'$ (document) .ready()'를 추가하는 것이 더 좋다. –

1

이 초경량 방법은 모든 광고 네트워크에 절대적으로 중요하지 않습니다.

광고를 호출하십시오.JS 루트 폴더에하고 그 안에이 줄을 추가 :

var can_run_ads = true; 

애드 블록은 ads.js이로드 될라는 파일을 허용하지 않습니다. 그래서, 그냥 내가 강하게 애드 블록을 제거하는 방법에 대한 지침이있는 페이지로 사용자를 리디렉션하는 것이 좋습니다 </body>

<script src="/ads.js"></script> 
<script> 
if(window.can_run_ads === undefined) { 
    alert('Please Disable Adblock, ****** ******!'); 
} 
</script>'; 

전에이 코드를 삽입.

1

FuckAdBlock을 사용하여 AdBlock이 활성화되었는지 감지하는 것이 좋습니다. 이 경우 원하는 페이지에 여러 개의 html을 자유롭게 추가 할 수 있습니다. 관련 https://github.com/sitexw/FuckAdBlock