//# 작성자 : 제트스윙 //# 이메일 : junsik.lee@gmail.com //# 블로그 : http://www.zetblog.net var zetsense_mouseover_flag = false; var zetsense_onblur_flag = false; var BrowserName = ''; var BrowserInfor = navigator.userAgent; var adsense_variable = null; var google_keyword = 'googlesyndication.com'; var google_keyword2 = 'googleads.g.doubleclick.net'; //# 애드센스 주소가 변견되어 추가 20081214 이준식 //var google_keyword = 'zetsense.com'; var click_window_type = ''; var sum_page_ad_block = ""; var DulFlag = false; //# 데이타의 중복 저장을 막기위한 변수 var offsetX1; //# 클릭시 X좌표 var offsetY1; //# 클릭시 Y좌표 //# 밀리세컨드(1000:1초) 만큼 처리를 지연시킨다. function delay(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return true; } } //## 데이타 처리1 function prepareAdsenseQS() { qstr = "http://pagead2.googlesyndication.com/pagead/ads?adtest=on&client=ca-adsenseko"; qstr += "&random=" + (new Date()).getTime(); qstr += "&color_border=" + document.forms.fieldForm.elements.border.value.substring(1); qstr += "&color_bg=" + document.forms.fieldForm.elements.bg.value.substring(1); qstr += "&color_link=" + document.forms.fieldForm.elements.link.value.substring(1); qstr += "&color_text=" + document.forms.fieldForm.elements.text.value.substring(1); qstr += "&color_url=" + document.forms.fieldForm.elements.url.value.substring(1); if(qs.get("gl")) qstr += "&gl=" + qs.get("gl"); qstr += "&url=" + document.forms.fieldForm.elements.weburl.value; return qstr; } //# 현재 페이지에 애드센스 광고를 대체 페이지로 변경 function zetsense_iframe_block(url) { elements = document.getElementsByTagName("iframe"); for (var i = 0;i < elements.length;i++) { if( (elements[i].src.indexOf(google_keyword) > -1) || (elements[i].src.indexOf(google_keyword2) > -1) ) { elements[i].src = url; } } } //## 데이타 처리2 function ShowAdsensePreview(adDimensions, adType) { iFrame="scrolling='no' marginwidth='0' marginheight='0' vspace='0' hspace='0' frameborder='0'"; adTempDimension=adDimensions.split("x"); tempWidth=adTempDimension[0]; tempHeight = adTempDimension[1].split("_")[0]; iFrameURL = "
"; return iFrameURL; } //# 현재 페이지에 애드센스 광고를 완전 숨김 function zetsense_iframe_hidden() { elements = document.getElementsByTagName("iframe"); for (var i = 0;i < elements.length;i++) { if( (elements[i].src.indexOf(google_keyword) > -1) || (elements[i].src.indexOf(google_keyword2) > -1) ) { elements[i].style.display="none"; } } } //# 광고차단시 사이트 접근금지 function zetsense_site_forbidden() { //alert("방문자의 IP가 부정클릭으로 의심되는 흔적이 있어 사이트 접근을 차단합니다. "); //top.location.href = "about:Blank"; top.location.href = "http://kr.zetsense.com/error/site_forbidden.html"; } //## 데이타 처리3 function gf() { var e = document.forms.fieldForm.elements.field; if(e != undefined) { for (var i = 0; i < e.length; i++) { if (e[i].checked) { return e[i].value; } } } var r = document.forms.fieldForm.elements; for (var i = 0; i < r.length; i++) { return r[i].id; } } //# 현재 페이지에 애드센스광고 검색 function zetsense_iframe_search() { //# 현재 페이지의 iframe태그 정보를 모두 가져옴 var ifrms = document.getElementsByTagName('iframe'); //# 애드센스 광고위에 마우스가 올려지면 실행 var ifrm_onmouseover=function() { zetsense_mouseover_flag = true; adsense_variable = this; //# 애드센스 환경설정 정보 가져오기 위해(IE+FF 모두 동작) //# 아래 명령어는 onmouseover 이벤트핸들러 외에서 사용하면 에러가 난다. //alert(event.srcElement.tagName); //alert(event.srcElement.src); //alert(event.srcElement.name);//google_ads_frame //alert(event.srcElement.parentElement.tagName);//TD //alert(event.srcElement.parentElement); offsetX1 = event.offsetX; offsetY1 = event.offsetY; /* if( event.srcElement.parentElement.tagName == "a" ) { alert('d'); } */ } //# 애드센스 광고위에 마우스가 올려졌다면 완전히 벗어나면 실행 var ifrm_onmouseout=function() { zetsense_mouseover_flag = false; } for(var i=0,m=ifrms.length;i -1) || (ifrms[i].src.indexOf(google_keyword2) > -1) ) { ifrms[i].onmouseover=ifrm_onmouseover; ifrms[i].onmouseout=ifrm_onmouseout; //# 파이어폭스 if(navigator.userAgent.indexOf("Firefox")>-1) { ifrms[i].addEventListener("blur", zetsense_new_window, false) } //# 익스플로어 else { ifrms[i].attachEvent("onblur", zetsense_new_window) } } } //# 현재 페이지에 애드센스 광고가 1개이상 있으면 실행 if( i>0 ) { zetsense_iframe_log_process(); } } function adsense_keydown() { zetsense_mouseover_flag = false; } //# 현재 페이지에 검색된 애드센스광고 클릭내역 이벤트부여 function zetsense_iframe_log_process() { //# 애드센스 광고위에 마우스 오버상태에서 "F5" 키를 누를시 내역기록 중지 //# 애드센스 광고위에 마우스 오버상태에서 F5으로 리로드시 로그안남기기 위해 사용 //# 애드센스 광고위에 마우스 오버상태에서 CTRL + <, >로 이동시 로그안남기기 위해 //# 애드센스 광고위에 아무곳이나 클릭후에 F5나 CTRL+<,>을 하게되면 keydown이벤트가 발생안해서 기록됨 -_- //# 애드센스 광고위에서 마우스클릭은 keydown이 실행되지 않음, 키보드에 의한 입력만 이벤트발생 //# 왜냐면 keydown 이벤트는 부모프레임에만 해당되고 애드센스 iframe에서는 실행안되기 때문 //# 익스플로어에서 동작 if(document.attachEvent) { //top이나 parent을 붙히고 http://bloggernews.media.daum.net/news/597189같은 블로거뉴스에 가면 "액세스 거부" //# 스크립트가 뜬다. -_- 제한이 왜케 심한지..원.. //top.document.attachEvent("onkeydown", adsense_keydown); //top.attachEvent("onbeforeunload", zetsense_beforeunload); document.attachEvent("onkeydown", adsense_keydown); attachEvent("onbeforeunload", zetsense_beforeunload); } //# 파이어폭스에서 동작 //# 애드센스 클릭된 상태에서 드래그후 애드센스 외의 영역에 드롭하면 새로운 창이 뜨며 애드센스 광고가 출력되지만 //# 이벤트는 동작하지 않는다. (나중에 수정 -_-) //# 애드센스광고 드래그후 주소밑에 즐겨찾기에 드롭하면 즐겨찾기만 단지 생성되고 //# 애드센스광고 드래그후 주소창에 드롭하면 이벤트가 발생안함 //# 애드센스광고 설명글 클릭후 F5 기록됨, 애드센스광고 제목, url 클릭시 정상기록됨 else if(document.addEventListener) { //top이나 parent을 붙히고 http://bloggernews.media.daum.net/news/597189같은 블로거뉴스에 가면 "액세스 거부" //# 스크립트가 뜬다. -_- 제한이 왜케 심한지..원.. //# 첫번째 인자 : 이벤트명 (파폭은 on을 붙히지 않는다.) //top.document.addEventListener("keydown", adsense_keydown , false); //top.addEventListener("beforeunload", zetsense_beforeunload , false); document.addEventListener("keydown", adsense_keydown , false); addEventListener("beforeunload", zetsense_beforeunload , false); } //# 기타 브라우저(넷츠게이프, 오페라, 사파리)에서 동작 else { //# 소스는 익스플로어와 동일 top.document.attachEvent("onkeydown", adsense_keydown); top.attachEvent("onbeforeunload", zetsense_beforeunload); } } //# 현재창에 광고 출력시 실행 function zetsense_beforeunload() { //# 구글 애드센스 광고를 클릭시 동작 if(zetsense_mouseover_flag) //# 애드센스광고에 마우스오버 상태일때 { click_window_type = '1'; adsense_click_process(); } //# 구글 애드센스 광고클릭으로 이동이 아닌 다른 메뉴나 링크를 통해 이동될때 실행 else { //# } } //# 새창에 광고 출력시 실행 function zetsense_new_window() { //# 구글 애드센스 광고를 클릭시 동작 if(zetsense_mouseover_flag) //# 애드센스광고에 마우스오버 상태일때 { click_window_type = '2'; adsense_click_process(); delay(600); //# 중간에 텀이 없이 페이지가 갱신되어 내역이 제대로 남지 않아서 추가했음 20080310 top.document.location.reload(); //# 새창으로 광고가 뜰때 광고차단 기능이 작동하기 위해 클릭페이지 한번 갱신함 20080306 //top.location.reload(); //# 새창으로 광고가 뜰때 광고차단 기능이 작동하기 위해 클릭페이지 한번 갱신함 20080306 } //# 구글 애드센스 광고클릭으로 이동이 아닌 다른 메뉴나 링크를 통해 이동될때 실행 else { //# 애드센스 영역에서 클릭영역이 아닌 영역을 클릭을 한후 애드센스 영역에서 벗어나면 실행 zetsense_onblur_flag = false; } } function adsense_click_process() { log_image = new Image(); if(BrowserInfor.indexOf("MSIE") >-1) { BrowserName = "IE"; } else if(BrowserInfor.indexOf("Firefox") >-1) { BrowserName = "FF"; } else { BrowserName = "ETC"; } //# 광고 클릭시 문자열 출력 click_msg = ""; if( click_msg != "") alert(click_msg); //# escape함수를 이용하면 "&"가 포함된 문자열도 get방식 전송가능 User = escape('haojin113'); Href = escape(document.location.href); Status = escape(window.status); Referrer = escape(document.referrer); BrowserInfor = escape(BrowserInfor); channel = escape(zetsense_adsense_variable(adsense_variable, "channel")); //# 채널값 가져옴(IE+FF 모두 동작) //# 20071117 이준식 현재 발급되는 애드센스 코드에는 채널값이 없으므로 코드의 google_ad_slot 값을 가져와서 채널값처럼 쓴다. (IE+FF 모두 동작) if(channel == "") channel = escape(zetsense_adsense_variable(adsense_variable, "slotname")); //# 추천 광고 구별을 사용 cpa_choice = escape(zetsense_adsense_variable(adsense_variable, "cpa_choice")); //# 워드프레스에서는 page라는 변수를 사용하면 자스 에러발생하여 page1으로 변경 2008-01-10 page1 = "http://www.zetsense.com/zetsense/zetsense_ok.php"; page1 += "?user=" + User; page1 += "&href=" + Href; page1 += "&status=" + Status; page1 += "&referrer=" + Referrer; page1 += "&browser=" + BrowserInfor; page1 += "&browser_type=" + BrowserName; page1 += "&channel=" + channel; //# 채널값은 고정 10자리로 page1 += "&cpa_choice=" + cpa_choice; //# cpa_choice 값은 추천광고만 가지고 있음 page1 += "&click_window_type=" + click_window_type; //# 새창인지 현재창인지 체크함 page1 += "&offsetX1=" + offsetX1; //# 클릭시 X측 좌표값 page1 += "&offsetY1=" + offsetY1; //# 클릭시 Y측 좌표값 //# 데이타의 중복 저장을 막기위한 처리(DulFlag) if( DulFlag == false ) { DulFlag = true; log_image.src = page1; } } //# 중요한 데이타 처리 function sf_ok(f, v) { if (window.event) { if (event.keyCode == 13) { sf_oc(f, v); // simulate onchange event.cancelBubble = true; } } } //# (IE+FF 모두 동작) //# URL의 getstrintg의 name값에 해당하는 value값을 가져옴 //# 클릭한 애드센스의 환경설정 정보알아냄 function zetsense_adsense_variable(iframeObj, name) { var dc = iframeObj.src; var prefix = name + "="; var begin = dc.indexOf("&" + prefix); if (begin == -1) { begin = dc.indexOf("?" + prefix); if (begin == -1) return ''; } else { begin += 1; } var end = dc.indexOf("&", begin); //# 맨마지막 변수값이면 if (end == -1) { end = dc.length; } return dc.substring(begin + prefix.length, end); } zetsense_iframe_search(); //# 메인실행