Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改网页高度时侦听事件?_Javascript_Html_Css_Dom Events - Fatal编程技术网

Javascript 更改网页高度时侦听事件?

Javascript 更改网页高度时侦听事件?,javascript,html,css,dom-events,Javascript,Html,Css,Dom Events,是否有一种方法可以在每次通过JavaScript更改网页高度时运行一些代码?网页高度本身,而不是浏览器高度。如果可能的话,我宁愿不使用jQuery。如果这是不可能的,有没有其他方法来完成以下任务 我正在为位于页面底部的div的高度变化设置动画,由用户单击按钮触发。我希望在发生这种情况时,页面保持滚动到页面底部。我想我可以听到一个高度变化事件,每次都更新滚动位置,然后它就会变得平滑。我目前的方法是等待动画完成,然后滚动到底部,但这没有动画效果,而且明显延迟到整个高度更新之后 当前代码: JS: C

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

我正在为位于页面底部的div的高度变化设置动画,由用户单击按钮触发。我希望在发生这种情况时,页面保持滚动到页面底部。我想我可以听到一个高度变化事件,每次都更新滚动位置,然后它就会变得平滑。我目前的方法是等待动画完成,然后滚动到底部,但这没有动画效果,而且明显延迟到整个高度更新之后

当前代码: JS:

CSS:


您可能想查看前一篇文章:

我看到了两个解决方案。接受的答案显示如何检查文档高度。每次进行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);