Событие прокрутки встроенного jQuery (IE) - PullRequest
6 голосов
/ 31 мая 2009

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

Ответы [ 4 ]

12 голосов
/ 31 мая 2009

Столько, сколько я люблю 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');
    }); 
}); 
3 голосов
/ 02 февраля 2011

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

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

1 голос
/ 28 февраля 2011

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

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 это точно не будет работать в разных браузерах.

0 голосов
/ 09 июля 2009

Поместите это на родителя:

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

А затем поместите это в содержимое iframe:

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

замените $(document) тем элементом, который вы пытаетесь прослушать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...