2013-02-23 4 views
2

JQuery를 사용하여 iframe을 클릭하는 방법. 아마존 배너가 있는데 iframe을 클릭 할 때 컨테이너 DIV를 닫아야합니다. 나는 iframe에 onclick이라는 '내용'을 시도했지만 이벤트를 바인딩했지만 아무것도 작동하지 않습니다. iframe을 클릭하면 Amazon의 페이지가 다른 탭에서 열리지 만 click 이벤트는 실행되지 않습니다. 나는 중단 점을 넣고 경고를하기 위해 경계 만합니다.iFrame 클릭 이벤트가 발생하지 않음

최신 JQuery 버전 1.9를 사용 중이며 Chrome에서 테스트했습니다. 또한 전역 클릭 ($ (document) .click 캡처) 및 클릭 영역을 확인하는 생각,하지만 iframe을 클릭하면 $ (document) .click 발사하지 않습니다. 어떤 제안?

다시 말하지만 Amazon 배너 iframe인데 내 서버가 아닌 Amazon에서 호스팅됩니다. 그래도 문제가 해결되지 바인딩에 대한 일반의

예 : http://jsbin.com/oyanis/4/edit

+1

보안 제한으로 인해 작동하지 않습니다. – Oliver

+0

감사합니다. 마우스 x, y에 따라 iframe 영역에서 클릭을 캡처하는 다른 방법 –

+0

투명 div를 오버레이 할 수 있지만 사용자는 두 번 클릭해야합니다. 죄송합니다. 편리한 해결책이 없습니다. – Oliver

답변

3

은 iframe 내용에에가 "클릭"얻을 수있는 깔끔한 트릭이 있습니다.

당신은 할 수 :

<div id="iframeinside"> 
    <iframe /> 
</div> 

를이 지금과 같은 JS 뭔가 말할 것을 가능하게한다 :이 간격으로 호출 할

var oldActive = document.activeElement; /* getting active Element */ 
var frame = $('#iframeinside iframe')[0]; 
$('#iframeinside').mouseenter(function() { 
     /* Setting interval to 1ms for getting eventually x,y mouse coords*/ 
     oldActive = document.activeElement; 
     setInterval('doSomething()', 1); 
}); 

$('#iframeinside').mouseleave(function() { 
     /* clear interval cause we arent over the element anymore*/ 
     clearInterval(intervalId); 
}); 

:

function doSomething() { 
    /* if the focus has changed to the iframe */ 
    if(oldActive != frame && document.activeElement == frame) { 
     oldActive = document.activeElement; 
     alert(myQuery); 
     alert('click did happen to the iframe'); 
    } 
} 

을 내가 이것을 사용 여러 가지가 있으며 항상 효과가있었습니다. 내가 무엇을 확인하지 못했던 것은 ie6,7과 더 오래된 형제들에 관한 것이 었습니다.

+0

그냥 원했던 것이지만 이제는 iframe 내부의 어떤 요소도 클릭 할 수 없었습니다. – Miguel

+0

그런 말을해서 유감이지만 가능한 한 얻을 수 있습니다. 이것은 당신이 할 수 없다는 것을 의미합니다. 브라우저 보안 제한 사항입니다! –

+0

이것은 좋은 해결책이지만 firefox에서만 작동합니다. 그것은 내가 크롬을 쓸 때 – aishazafar

관련 문제