Javascript 更改网页高度时侦听事件?
是否有一种方法可以在每次通过JavaScript更改网页高度时运行一些代码?网页高度本身,而不是浏览器高度。如果可能的话,我宁愿不使用jQuery。如果这是不可能的,有没有其他方法来完成以下任务 我正在为位于页面底部的div的高度变化设置动画,由用户单击按钮触发。我希望在发生这种情况时,页面保持滚动到页面底部。我想我可以听到一个高度变化事件,每次都更新滚动位置,然后它就会变得平滑。我目前的方法是等待动画完成,然后滚动到底部,但这没有动画效果,而且明显延迟到整个高度更新之后 当前代码: JS: CSS:Javascript 更改网页高度时侦听事件?,javascript,html,css,dom-events,Javascript,Html,Css,Dom Events,是否有一种方法可以在每次通过JavaScript更改网页高度时运行一些代码?网页高度本身,而不是浏览器高度。如果可能的话,我宁愿不使用jQuery。如果这是不可能的,有没有其他方法来完成以下任务 我正在为位于页面底部的div的高度变化设置动画,由用户单击按钮触发。我希望在发生这种情况时,页面保持滚动到页面底部。我想我可以听到一个高度变化事件,每次都更新滚动位置,然后它就会变得平滑。我目前的方法是等待动画完成,然后滚动到底部,但这没有动画效果,而且明显延迟到整个高度更新之后 当前代码: JS: C
您可能想查看前一篇文章: 我看到了两个解决方案。接受的答案显示如何检查文档高度。每次进行ajax调用时都可以调用它,这会导致文档高度发生变化。
该帖子的另一个选项是使用setInterval。基本上你可以使用相同/相似的功能,每x秒检查一次。我想得太多了。我通过在动画发生时非常频繁地更新滚动位置来实现所需的行为,然后在动画完成后停止更新。这不是最干净的代码,也不是Safari上的动画buttery smooth明显比Chrome更平滑,但它比没有动画要好得多 我只是将else语句中的代码替换为:
legal.className = activeClass;
var timer = setInterval(function() { window.scrollTo(0,document.body.scrollHeight) }, 5);
setTimeout(function() { clearInterval(timer) }, 500);
你有密码吗?如果不改变浏览器高度,还有什么会影响div的高度?AJAX调用的响应?一般来说,Javascript更改时不会触发事件,只有在用户交互时才会触发。您可以使用setInterval定期检查高度,并查看其是否已更改。如果每隔x秒手动检查一次可以订阅dom突变事件,如果您不想轮询或修补每个内容入口点,请在每次触发后检查高度。
#myDiv {
max-height: 0;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-ms-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}
.activeDiv {
max-height: 500px !important;
}
legal.className = activeClass;
var timer = setInterval(function() { window.scrollTo(0,document.body.scrollHeight) }, 5);
setTimeout(function() { clearInterval(timer) }, 500);