读书人

一个滚动条事件在不同浏览器上的有关问

发布时间: 2013-01-09 09:38:17 作者: rapoo

一个滚动条事件在不同浏览器下的问题
本帖最后由 a16696945 于 2012-04-12 04:20:15 编辑 实现的功能是:
当滚动条触底的时候,alert一个信息

在Chrome下工作正常,
FF下异常(FF全部变黑),
IE下异常(还没触底就alert一次,紧接着滚动条自动触底又alert一次)

全部代码如下:


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>div</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('div').scroll(function(){
var nScrollHeight = $(this)[0].scrollHeight;;
var nScrollTop = $(this)[0].scrollTop;
var nDivHeight = $(this).innerHeight();
if(nScrollTop + nDivHeight >= nScrollHeight){
alert("aaa");
}
});
});
</script>
</head>
<body>
<div style = 'OVERFLOW: auto; HEIGHT: 280px'>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
</div>
</body>
</html>

[解决办法]
的确很怪异,没遇到过这样的问题。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>div</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('div').scroll(function(){
var nScrollHeight = $(this)[0].scrollHeight;;
var nScrollTop = $(this)[0].scrollTop;
var nDivHeight = $(this).innerHeight();
if(nScrollTop + nDivHeight >= nScrollHeight){
//alert("aaa");
$('#a').html(function(){
return +this.innerHTML + 1;
})
return false;
}

});
});


</script>
</head>
<body>
<div id="a">0</div>
<div style = 'OVERFLOW: auto; HEIGHT: 280px'>
<p>1111</p>


<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
<p>1111</p>
</div>
</body>
</html>




发现两个问题
1. 不去掉alert,我这边在ff运行,滚动到底部,ff直接死了,去掉alert就ok了,不管是 滚动 还是 鼠标拉动直至底部,innerHTML都是加1
2.在ie下,alert不会让ie死,去掉alert,试了下innerHTML的值,很诡异,滚动至底部会加2,鼠标拉动至底部是正常的加1,无解。。。

读书人网 >跨浏览器开发

热点推荐