문제

Internet Explorer 7에서 스크롤 이벤트를들을 수 없습니다.

난 노력 했어:

$("#myIframe").scroll(function() { alert('hi'); })

FF의 작업 :

$($("#myIframe").contents().get(0)).scroll(function() { alert('hi'); })

키 프레스 작동 :

$($("#myIframe").contents().get(0)).keydown(function() { alert('hi'); })

올바른 솔루션이 없습니다

다른 팁

내가 jQuery를 좋아하는만큼. 나는 이것을 작동시킬 수 없다. 그러나 나는 이것을 평범한 오래된 JavaScript에서 시도했으며 IE, FF, Safari 및 Chrome에서 잘 작동했습니다.

<script type="text/javascript">
    window.onload = function() {
      var frm = document.getElementById("myIframe").contentWindow;
      frm.onscroll = function(){
        alert("EUREKA");
      }
    }
</script>

편집하다: Window.load ()를 사용할 때 FF, Safari 및 Chrome에서 다음은 작동합니다. document.ready를 사용하는 경우 FF에서만 작동합니다. 어떤 이유로 든 IE8에서는 작동하지 않습니다.

$(window).load(function(){
    $($('#myIframe').contents()).scroll(function(){
       alert('frame scrolled in jquery');
    }); 
}); 

나는 그것이 오래된 실이라는 것을 알고 있지만 어떤 사람들은 그것이 유용하다는 것을 알 수 있습니다.

$(document).scroll() 교체 할 수 있습니다 $(window).scroll(), 그리고 그것은 지금까지 나를 위해 일했습니다.

이 시도:

중첩 된 브라우징 컨텍스트의 DOM을 가로 지르기 전에 2 가지 일이 발생해야합니다.

문서 준비 이벤트를 처리하고 IFRAME가 존재한다는 것을 알아야합니다.

그리고 iframe이로드되었는지 확인해야합니다.

즉:

    $(document).ready(function(){

        // #page is the id of the iframe
        $('#page').load(function(){
            // $(this)[0].contentWindow is the window of your nested browsing context/ iframe
            $($(this)[0].contentWindow).scroll(function(){
                console.log($(this).scrollTop());
            });
        });
     });

주목할만한 점은 이것이 Firefox에서 크로스 브라우저가 작동하지 않는다는 것입니다.

이것을 부모에게 넣으십시오.

var childScrollHandler = function () {
   alert('Scrolling going on');
}

그런 다음 이것을 iframe 컨텐츠에 넣습니다.

$(document).bind('scroll', function(ev){
    parent.childScrollHandler(ev);
});

바꾸다 $(document) 당신이 듣고 자하는 요소에 의해.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top