jQuery evento iframe scorrimento (IE)
-
06-09-2019 - |
Domanda
Non è possibile ascoltare l'evento di scorrimento in Internet Explorer 7.
Ho provato:
$("#myIframe").scroll(function() { alert('hi'); })
Opere di FF:
$($("#myIframe").contents().get(0)).scroll(function() { alert('hi'); })
Come funzionano pressione dei tasti:
$($("#myIframe").contents().get(0)).keydown(function() { alert('hi'); })
Nessuna soluzione corretta
Altri suggerimenti
Per quanto io amo jQuery. Non riesco a far funzionare tutto questo. Tuttavia, ho provato questo in pianura vecchio javascript e ha funzionato bene in IE, FF, Safari e Chrome.
<script type="text/javascript">
window.onload = function() {
var frm = document.getElementById("myIframe").contentWindow;
frm.onscroll = function(){
alert("EUREKA");
}
}
</script>
Modifica le seguenti opere in FF, Safari e Chrome quando si utilizza window.load (). Quando si utilizza document.ready funziona solo in FF. Per qualsiasi motivo non funziona in IE8 in entrambi i casi.
$(window).load(function(){
$($('#myIframe').contents()).scroll(function(){
alert('frame scrolled in jquery');
});
});
Lo so che è un vecchio thread, ma alcune persone poteva essere utile.
$(document).scroll()
può essere sostituito da $(window).scroll()
, e ha funzionato per me finora.
Prova questo:
2 cose devono accadere prima che si può attraversare il DOM di un contesto di navigazione nidificato.
Hai bisogno di sapere che l'iframe esiste, curato con l'evento ready documento.
E è necessario fare in modo che l'iframe è stato caricato.
vale a dire:
$(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 da notare è che questo non sarà sicuramente il lavoro cross browser in Firefox.
Mettere questo sul genitore:
var childScrollHandler = function () {
alert('Scrolling going on');
}
E poi mettere questo sul contenuto iframe:
$(document).bind('scroll', function(ev){
parent.childScrollHandler(ev);
});
sostituire $(document)
con qualsiasi elemento che si sta cercando di ascoltare in.