jQuery evento iframe rolagem (IE)
-
06-09-2019 - |
Pergunta
Não é possível ouvir o evento de rolagem no Internet Explorer 7.
Eu tentei:
$("#myIframe").scroll(function() { alert('hi'); })
Obras de FF:
$($("#myIframe").contents().get(0)).scroll(function() { alert('hi'); })
keypresses começar o trabalho:
$($("#myIframe").contents().get(0)).keydown(function() { alert('hi'); })
Nenhuma solução correta
Outras dicas
Por mais que eu amo jQuery. Eu não posso chegar a este trabalho. No entanto, eu tentei isso na planície javascript antigo e ele funcionou muito bem no IE, FF, Safari e Chrome.
<script type="text/javascript">
window.onload = function() {
var frm = document.getElementById("myIframe").contentWindow;
frm.onscroll = function(){
alert("EUREKA");
}
}
</script>
EDIT: As seguintes obras em FF, Safari e Chrome ao usar window.load (). Ao usar document.ready ele só funciona no FF. Por alguma razão ele não funciona no IE8 em qualquer evento.
$(window).load(function(){
$($('#myIframe').contents()).scroll(function(){
alert('frame scrolled in jquery');
});
});
Eu sei que é uma discussão antiga, mas algumas pessoas podem achar que é útil.
$(document).scroll()
pode ser substituído por $(window).scroll()
, e ele tem trabalhado para mim até agora.
Tente isto:
2 coisas devem acontecer antes que você possa atravessar o dom de um contexto de navegação aninhada.
Você precisa saber que existe o iframe, cuidados com o pronto evento documento.
E você precisa ter certeza de que o iframe foi carregado.
ou seja:
$(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());
});
});
});
Uma coisa a notar é que este definitivamente não irá funcionar cross browser no Firefox.
Coloque este sobre o pai:
var childScrollHandler = function () {
alert('Scrolling going on');
}
E, em seguida, colocar isso no conteúdo iframe:
$(document).bind('scroll', function(ev){
parent.childScrollHandler(ev);
});
substituir $(document)
por qualquer elemento que você está tentando ouvir em.