2014-04-06 2 views
2

iframe 내부의 요소를 클릭하면 click 이벤트가 발생하지만 작동하지 않는 것 같습니다. 나의 현재 셋업 :
jsFiddle : http://jsfiddle.net/q4aa3/
jQuery를 :jQuery : iframe 내부에서 이벤트 클릭

가 iframe을 내부의 이미지에
$(document).ready(function() { 
    $('#this-iframe').load(function() { 
     $('#this-iframe').contents().find('img').live({ 
      click: function() { 
       alert('clicked img'); 
      } 
     }); 
    }); 
}); 

을 클릭하면 경고를 발사되지, 왜 그런지 모르겠어요, 또는 달성하기 위해 더 나은 방법이있다 이? 어떤 제안이라도 대단히 감사하겠습니다!

+1

iframe에 다른 도메인의 페이지가 포함되어 있습니다.이 경우 jsfiddle 결과 프레임이 'fiddle.jshell.net'에서로드되고 iframe에서 'jsfiddle.net'이로드됩니다. 즉, 다른 도메인이므로 의미가 없습니다. 그것에 액세스 할 수 있습니다. 또한 jQuery의'.load' 함수는 url로부터 데이터를로드하는데, onload 이벤트가 아닙니다. [jQuery load docs] (http://api.jquery.com/load) –

+0

@PatrickEvans'.load()'또한로드 이벤트를 처리하는 데 사용됩니다. http://api.jquery.com/load-event/ –

+0

@PatrickEvans 예, jsFiddle은 단지 내 설정의 데모입니다. 이 도메인을 사용하고있는 iFrame 콘텐츠도 동일한 도메인의 콘텐츠이므로 액세스 할 수 있습니다. 그러나이 클릭 기능은 여전히 ​​작동하지 않습니다. – user1374796

답변

8

동일한 도메인에 iframe이있는 경우이 스크립트를 사용하여 iframe의 클릭을 잡을 수 있습니다. .live를 사용하지 마십시오. jQuery 1.7부터 depriciated됩니다.

var iframeBody = $('body', $('#iframe')[0].contentWindow.document); 
$(iframeBody).on('click', 'img', function(event) { 
    doSomething(); 
}); 

iframeBody 변수를 통해 본문을 조작 할 수 있습니다.