Вопрос

Не удается прослушать событие прокрутки в 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>

Редактировать: Следующее работает в FF, Safari и Chrome при использовании window.load().При использовании document.ready это работает только в FF.По какой-либо причине это не работает в IE8 ни в том, ни в другом случае.

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

Я знаю, что это старая тема, но некоторые люди могли бы счесть ее полезной.

$(document).scroll() может быть заменен на $(window).scroll(), и до сих пор у меня это срабатывало.

Попробуй это:

2. должны произойти вещи, прежде чем вы сможете перейти к dom вложенного контекста просмотра.

Вам нужно знать, что iframe существует, о чем позаботились с помощью события document ready.

И вам нужно убедиться, что 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