2010-01-19 3 views
1

<DIV>에서 발생한 자바 스크립트의 클릭을 어떻게 감지 할 수 있습니까?
예를 들어, 페이지의 3 가지 <DIV>에 3 개의 애드 센스 광고가 있고 광고를 클릭하면 작동을 감지하고 실행하고 싶습니다.Javascript가 포함 된 DIV 요소에 대한 클릭 감지?

비어 있거나 다른 요소가있는 경우 <DIV>에서 클릭을 쉽게 감지 할 수 있습니다. 그러나 adSense 광고 (코드)에 대한 클릭을 감지하는 방법은 무엇입니까?

답변

2

내가 아는 한 애드 센스 광고는 iframe 요소에로드되어 액세스하면 동일한 원산지 정책을 위반하게됩니다. 즉, 외부 URL을 가리키는 iframe에서 클릭을 감지 할 수 없으므로이를 수행 할 수 없습니다.

+0

당신이 확실합니까? 넌 나를 헷갈 리게 했어. 나는 adsense 부호를 만지지 않을 것이다,이 모양 무언가 같이 :

....... adsense JavaScript here ......
저것은 adsense TOS를 위반하고 있는가? – Simon

+0

나는 꽤 확신한다. iframe에있는 모든 이유는 호스팅 페이지가 링크에 액세스하는 것을 방지하고 사용자에게 링크를 전달하는 것입니다. 페이지에 페이지를 포함 시키면 페이지 소유자에게 너무 많은 권한을 부여하는 반면 iframe 컨트롤에서는 Google과 함께 유지합니다. 나는 애드 센스 코드를 수정하는 것에 대해 확신 할 수 없지만 대부분 TOS 위반입니다. –

2

jQuery와 같은 프레임 워크를 사용하고 있습니까? 그렇다면, 당신은 사업부의 자식에 클릭 핸들러를 추가 할 수 있습니다 : 정말 이런 식으로 뭔가를 달성해야하는 경우 나 사용자와의 약간의 속임수 것

targetElement = $("#yourDivId").children()[0] 
$(targetElement).click(function(){ 
    alert("target element was clicked"); 
}); 
+0

앤디의 좋은 점. 콘텐츠가 iframe의 외부 도메인에있는 경우 동일한 원본 정책으로 인해 작동하지 않습니다. –

+0

좋아, jQuery를 사용하는 다른 방법이 없다면 나는 이것을 보여 주겠다. 어쨌든 나는 간단 해지기를 원한다. 그래서 jQuery없이 시도 할 수있는 방법이 있는가? – Simon

+0

Interesting, Adsense/iframe 광고에는별로 사용되지 않지만 Infolink와 같은 자바 스크립트 삽입 광고를 추적하는 데 사용될 수있는 것처럼 보입니다. – Skizz

1

.

대신 iframe을 클릭하려고 할 때 오버레이 div를 만들어 iframe 위에 배치하십시오. 클릭 이벤트를 첨부하고 div를 클릭하면 숨 깁니다.

사용자가 링크를 클릭했다고 느끼지만 올바르게 작동하지 않습니다. 그가 두번 째 클릭하면 이미 작동 할 것이므로 오버레이가 숨겨집니다.

(단지 설명의 목적을 위해) 예제 코드 :

<html> 
    <style> 
     .test { 
      position : absolute; 
      top : 0; 
      left : 0; 
      width : 300; 
      height : 300; 
      z-index : 999; 
      filter : alpha(opacity = 0); 
      opacity : 0; 
      background-color:black; 
     } 
    </style> 
    <script> 
     function start(){ 
      var div = document.getElementById("target"); 
      var source = document.createElement("div"); 
      source.className = "test"; 
      document.body.appendChild(source); 

      var style = source.style; 

      var div2 = document.createElement("div"); 
      document.body.appendChild(div2); 

      source.onclick = function(e){ 
       style.display = "none"; 
       div.onmouseout = function(){ 
        div2.innerHTML = "mouseout"; 
        style.display = ""; 
        div.onmouseout = null; 
       } 
       div2.innerHTML = "clicked"; 
      } 
     } 
    </script> 
    <body onload="start()"> 
     <div id="target"> 
      <iframe src="http://mail.ru" style="width:300;height:300"></iframe> 
     </div> 

    </div> 
</html> 
+0

링크를 두 번 클릭하는 사이트 아이디어가 마음에 들지 않습니다. 링크 위로 마우스를 가져 가면 마우스 포인터가 올바른 커서로 변경됩니까? –

+0

글쎄, 그게 내가 속임수라고 부른 이유이다 :) 게다가, 내가 알지 못하는 사람이라면 나는 이것을 거의 알지 못할 것이라고 생각한다. 그것은 당신에게 달려 있습니다. 이것이 내가이 문제를 해결할 수있는 방법입니다. – nemisj

+0

사용자가 광고를 클릭하면 돈을주고 있습니다. 나는 그걸 방해하려고 아무 것도하지 않을 것입니다. 번 돈 (Google AdSense의 경우 1 달러 초과)은 추적하는 것 이상의 가치가 있습니다. –