当document height 发生变化时事件是什么

发布于 2022-09-04 09:57:55 字数 53 浏览 42 评论 0

当document height发生变化时的事件是什么,resize只能用于window吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夏末的微笑 2022-09-11 09:57:55
function onElementHeightChange(elm, callback){
    var lastHeight = elm.clientHeight, newHeight;
    (function run(){
        newHeight = elm.clientHeight;
        if( lastHeight != newHeight )
            callback();
        lastHeight = newHeight;

        if( elm.onElementHeightChangeTimer )
            clearTimeout(elm.onElementHeightChangeTimer);

        elm.onElementHeightChangeTimer = setTimeout(run, 200);
    })();
}


onElementHeightChange(document.body, function(){
    alert('Body height changed');
});

试下这个

椒妓 2022-09-11 09:57:55

document height发生变化时的事件是什么?

答案是有好几个,因为不同时代与浏览器、标准背景造成的:

  • DOMAttrModified: 属于DOM3标准Mutation events的其中一员,这个也是浏览器之间不太相容的一个标准。IE9部份支持,Webkit类的Chrome与Safari不支持。标准中已弃用,但还有一些旧的浏览器支持。

所以,你要统一性的解决方式,最好使用有人写好的库,或是可以符合从旧到新版本的浏览器的情况。

像这个是attrchange是个jQuery插件,就有考量到上面三种事件。

像这个css-element-queries

里面有一个ResizeSensor类,可以"感应"出目前被更动了,范例如下:

var element = document.getElementById('myElement');
new ResizeSensor(element, function() {
    console.log('Changed to ' + element.clientWidth);
});

resize只能用于window吗?

是的,只有window有绑定这个事件GlobalEventHandlers.onresize

江城子 2022-09-11 09:57:55

高度写死的话。不适用,高度自适应可以用这个。

window.addEventListener('resize',() => {
    if(document宽度未改变){
        return false
    }else{
    //js
    }
},false)
浊酒尽余欢 2022-09-11 09:57:55

你的浏览器坏了?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文