jQuery caso de desplazamiento de marco flotante (IE)
-
06-09-2019 - |
Pregunta
No se puede escuchar el evento de desplazamiento en Internet Explorer 7.
He intentado:
$("#myIframe").scroll(function() { alert('hi'); })
Producción de FF:
$($("#myIframe").contents().get(0)).scroll(function() { alert('hi'); })
pulsaciones de teclas conseguir trabajo:
$($("#myIframe").contents().get(0)).keydown(function() { alert('hi'); })
No hay solución correcta
Otros consejos
Por mucho que me encanta jQuery. No puedo conseguir que esto funcione. Sin embargo, he intentado esto en el viejo y simple javascript y ha funcionado bien en IE, FF, Safari y Chrome.
<script type="text/javascript">
window.onload = function() {
var frm = document.getElementById("myIframe").contentWindow;
frm.onscroll = function(){
alert("EUREKA");
}
}
</script>
EDIT: Los siguientes obras en FF, Safari y Chrome cuando se utiliza window.load (). Al utilizar document.ready sólo funciona en FF. Por alguna razón no funciona en IE8 en cualquiera de los casos.
$(window).load(function(){
$($('#myIframe').contents()).scroll(function(){
alert('frame scrolled in jquery');
});
});
Sé que es un viejo hilo, pero algunas personas podría encontrar útil.
$(document).scroll()
puede ser reemplazado por $(window).scroll()
, y ha funcionado para mí hasta ahora.
Prueba esto:
2 cosas deben suceder antes de que pueda recorrer el DOM de un contexto de navegación anidada.
Es necesario saber que el iframe existe, cuidado con el evento ready documento.
Y lo que necesita para asegurarse de que el iframe ha cargado.
es decir:
$(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());
});
});
});
Una cosa a tener en cuenta es que este definitivamente no va a funcionar en navegadores Firefox.
poner esto en el padre:
var childScrollHandler = function () {
alert('Scrolling going on');
}
Y a continuación, poner esto en el contenido anidado:
$(document).bind('scroll', function(ev){
parent.childScrollHandler(ev);
});
reemplazar $(document)
por cualquier elemento que está intentando escuchar a.