jQuery的iframe中滚动事件(IE)
-
06-09-2019 - |
题
无法收听Internet Explorer 7中的滚动事件
我已经试过:
$("#myIframe").scroll(function() { alert('hi'); })
Works的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和铬以下作品使用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存在,与文档准备事件的照顾。
而你需要确保的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)
。
不隶属于 StackOverflow