質問

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つのことが起こる必要があります。

あなたは、文書readyイベントでの世話を、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