javascript - 当document height 发生变化时事件是什么
怪我咯
怪我咯 2017-04-11 11:18:45
[JavaScript讨论组]

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(4)
怪我咯
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');
});

试下这个

伊谢尔伦

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

黄舟

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

window.addEventListener('resize',() => {
    if(document宽度未改变){
        return false
    }else{
    //js
    }
},false)
PHPz

你的浏览器坏了?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号