无法在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'); })
答案 0 :(得分:12)
尽管我喜欢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>
编辑:在使用window.load()时,以下适用于FF,Safari和Chrome。使用document.ready时它只适用于FF。无论出于何种原因,在任何一种情况下它都无法在IE8中运行。
$(window).load(function(){
$($('#myIframe').contents()).scroll(function(){
alert('frame scrolled in jquery');
});
});
答案 1 :(得分:3)
我知道这是一个旧线程,但有些人会发现它很有用。
$(document).scroll()
可以替换为$(window).scroll()
,到目前为止它对我有用。
答案 2 :(得分:1)
试试这个:
在遍历嵌套浏览上下文的dom之前必须发生两件事。
您需要知道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中的浏览器。
答案 3 :(得分:0)
把它放在父母身上:
var childScrollHandler = function () {
alert('Scrolling going on');
}
然后将其放在iframe内容上:
$(document).bind('scroll', function(ev){
parent.childScrollHandler(ev);
});
将$(document)
替换为您想要收听的任何元素。