出于某种原因,此代码适用于所有chrome,safari和ei,但不适用于Firefox。
<script type="text/javascript">
function toscheck(){
if(tos.scrollTop+540 > tos.scrollHeight){
alert(tos.scrollTop + " " + tos.scrollHeight);
}
}
</script>
----------
<textarea name="tos" id="tos" readonly="readonly" onmousemove="toscheck()">text</textarea>
在FF上没有触发任何内容,但在所有其他浏览器上都可以正常工作。
但是,<textarea.. onmousemove=alert('test')>text</textarea>
工作正常。
我是javascript的新手,所以任何帮助都将非常感谢。
答案 0 :(得分:2)
这实际上不适用于任何浏览器。您的Javascript代码中缺少一个结束括号:
<script type="text/javascript">
function toscheck() {
if (tos.scrollTop + 540 > tos.scrollHeight) {
alert(tos.scrollTop + " " + tos.scrollHeight);
}
}
</script>
答案 1 :(得分:0)
除了您遗失的}
关闭您的功能外,它似乎适用于我。
<script type="text/javascript">
function toscheck(){
if(tos.scrollTop+540 > tos.scrollHeight){
alert(tos.scrollTop + " " + tos.scrollHeight);
}
} // <----- was missing
</script>
此外,在您的功能中,您可以直接转到tos.property
。
您需要将this
传递到mousemove="toscheck(this)"
,并将您的功能设置为:
<script type="text/javascript">
function toscheck(elem){
if(elem.scrollTop+540 > elem.scrollHeight){
alert(elem.scrollTop + " " + elem.scrollHeight);
}
}
</script>
或者从这个函数中获取你的textarea:
<script type="text/javascript">
function toscheck(){
var tos = document.getElementById('tos');
if(tos.scrollTop+540 > tos.scrollHeight){
alert(tos.scrollTop + " " + tos.scrollHeight);
}
}
</script>
答案 2 :(得分:0)
最佳解决方案,使用jQuery,它是自动跨浏览器的方法,或者看到this page关于使代码跨浏览器兼容,因为re:中的实现之间存在差异:
Scrolling offset - how much the page has scrolled.
var x,y;
if (self.pageYOffset) // all except Explorer
{
x = self.pageXOffset;
y = self.pageYOffset;
}
else if (document.documentElement && document.documentElement.scrollTop)
// Explorer 6 Strict
{
x = document.documentElement.scrollLeft;
y = document.documentElement.scrollTop;
}
else if (document.body) // all other Explorers
{
x = document.body.scrollLeft;
y = document.body.scrollTop;
}
和
var x,y;
var test1 = document.body.scrollHeight;
var test2 = document.body.offsetHeight
if (test1 > test2) // all but Explorer Mac
{
x = document.body.scrollWidth;
y = document.body.scrollHeight;
}
else // Explorer Mac;
//would also work in Explorer 6 Strict, Mozilla and Safari
{
x = document.body.offsetWidth;
y = document.body.offsetHeight;
}
答案 3 :(得分:0)
您的实际文本框有多大?也许它的渲染尺寸与您预期的不同和/或滚动高度有点不同?也许这是字体大小/分辨率/ DPI设置问题。要尝试解决它,请添加一个小的重叠量,这样您实际上不必滚动到绝对底部(例如,当使用键盘导航和Ctrl + End时,无法在IE中工作)。
if(tos.scrollTop + 565 > tos.scrollHeight){
另一方面,我不会在onmousemove
中检查这一点,因为人们可能也会使用键盘键进行导航。我建议使用onblur
,也许onmouseup
和/或onkeyup
。但是,如果在滚动条上放下鼠标按钮,则onmouseup
可能不会触发。