سؤال

لا يمكن الاستماع إلى حدث التمرير في 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'); })

لا يوجد حل صحيح

نصائح أخرى

بقدر ما أحب مسج. لا أستطيع الحصول على هذا للعمل. ومع ذلك، حاولت هذا في جافا سكريبت قديم وعمل على ما يرام في IE، FF، Safari و Chrome.

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

تعديل: يعمل ما يلي في FF، Safari و Chrome عند استخدام Window.load (). عند استخدام المستند.Ready، يعمل فقط في FF. لأي سبب كان لا يعمل في IE8 في أي حال من الحدث.

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

أعلم أنه موضوع قديم، لكن بعض الأشخاص قد يجدونه مفيدا.

$(document).scroll() يمكن استبدالها ب $(window).scroll(), وقد عملت بالنسبة لي حتى الآن.

جرب هذا:

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());
            });
        });
     });

شيء واحد يجب ملاحظته هو أن هذا سوف لا يعمل بالتأكيد على متصفح عبر الإنترنت في فايرفوكس.

ضع هذا على الوالد:

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

ثم ضع هذا على محتوى iFrame:

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

يستبدل $(document) من خلال أي عنصر تحاول الاستماع إليه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top