복붙노트

[JQUERY] 상위 창의 핸들러에 iframe에 이벤트를 첨부하십시오.

JQUERY

상위 창의 핸들러에 iframe에 이벤트를 첨부하십시오.

해결법


  1. 1.contents ()를 사용하여 iframe 내부의 문서 개체에 액세스하십시오. 하나의 문서에서 jQuery 라이브러리를 사용하여 다른 문서를 조작하여 일반적으로 피해야 함을 알 수 있습니다. 그러나 바인딩 이벤트의 경우에는 작동합니다.

    contents ()를 사용하여 iframe 내부의 문서 개체에 액세스하십시오. 하나의 문서에서 jQuery 라이브러리를 사용하여 다른 문서를 조작하여 일반적으로 피해야 함을 알 수 있습니다. 그러나 바인딩 이벤트의 경우에는 작동합니다.

    $('[name=temp_iframe]').contents().find('button').click(function() {
        alert('click');
    });
    

    이를 위해서는 iframe과 해당 내용이로드되어야하므로 필요할 경우 $ (윈도우) .Load () 핸들러에서 수행해야합니다. 이벤트가 자식 문서에서 부모로 전파되지 않으므로 문서간에 Live / Delegate를 사용할 수 없습니다.


  2. 2.일반 JavaScript에서는 다음과 같습니다.

    일반 JavaScript에서는 다음과 같습니다.

    document.getElementById("frameId").contentDocument.getElementById("buttonId").click();
    

    속성 값 및 태그 이름으로 요소를 검색 해야하는 경우 다음을 수행 할 수 있습니다.

    document.querySelectorAll('[name=temp_iframe]')[0].contentDocument.getElementsByTagName('button')[0].click();
    
  3. from https://stackoverflow.com/questions/3672726/attach-an-event-in-a-child-iframe-to-a-handler-in-the-parent-window by cc-by-sa and MIT license