Событие прокрутки jQuery iframe (IE)
-
06-09-2019 - |
Вопрос
Не удается прослушать событие прокрутки в 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)
любым элементом, к которому вы пытаетесь прислушаться.