在网页高度更改时收听事件?

时间:2014-05-07 18:14:09

标签: javascript html css javascript-events height

每次通过JavaScript更改网页height时,有没有办法运行一些代码? (网页height本身,而不是浏览器的高度。)如果可能的话,我宁愿不使用jQuery。如果那不可能,还有其他方法可以完成以下任务吗?

我正在设置位于页面底部的height的{​​{1}}更改动画,由用户点击按钮触发。我希望页面在发生这种情况时保持滚动到页面底部。我想我可以听一次div更改事件并每次更新滚动位置,然后就会很顺利。我目前的做法是等到动画完成然后滚动到底部,但这没有动画效果,显然会延迟到更新整个height之后。

当前代码:
JS:

height

CSS:

var myDiv = document.querySelector("#myDiv");
var activeClass = "activeDiv";
if (myDiv.className == activeClass) {
    myDiv.className = "";
}
else {
    myDiv.className = activeClass;
    setTimeout("window.scrollTo(0,document.body.scrollHeight)", 150);
 }

2 个答案:

答案 0 :(得分:0)

您可以查看以前的帖子:Detect Document Height Change

我在那里看到2个解决方案。接受的答案显示了如何检查文档高度。每次进行ajax调用都会导致文档高度发生变化时,可以调用此方法。 该帖子的另一个选项是使用setInterval()。基本上你可以使用相同/相似的功能,只需每隔x秒检查一次。

答案 1 :(得分:0)

我在思考它。我通过在动画发生时非常频繁地更新滚动位置来实现所需的行为,然后在完成后停止更新。它不是最干净的代码也不是动画黄油光滑(在Safari上比Chrome更平滑),但它比没有动画要好得多。

我只是用else:

替换了else语句中的代码
legal.className = activeClass;
var timer = setInterval(function() { window.scrollTo(0,document.body.scrollHeight) }, 5);
setTimeout(function() { clearInterval(timer) }, 500);