每次通过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);
}
答案 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);