监测div大小变化_JS监听div的resize事件

/**

* Created by taozh on 2017/5/6.

* taozh1982@gmail.com*/

var EleResize ={

_handleResize:function(e) {var ele = e.target ||e.srcElement;var trigger =ele.__resizeTrigger__;if(trigger) {var handlers =trigger.__z_resizeListeners;if(handlers) {var size =handlers.length;for (var i = 0; i < size; i++) {var h =handlers[i];var handler =h.handler;var context =h.context;

handler.apply(context, [e]);

}

}

}

},

_removeHandler:function(ele, handler, context) {var handlers =ele.__z_resizeListeners;if(handlers) {var size =handlers.length;for (var i = 0; i < size; i++) {var h =handlers[i];if (h.handler === handler && h.context ===context) {

handlers.splice(i,1);return;

}

}

}

},

_createResizeTrigger:function(ele) {var obj = document.createElement('object');

obj.setAttribute('style','display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden;opacity: 0; pointer-events: none; z-index: -1;');

obj.οnlοad=EleResize._handleObjectLoad;

obj.type= 'text/html';

ele.appendChild(obj);

obj.data= 'about:blank';returnobj;

},

_handleObjectLoad:function(evt) {this.contentDocument.defaultView.__resizeTrigger__ = this.__resizeElement__;this.contentDocument.defaultView.addEventListener('resize', EleResize._handleResize);

}

};if (document.attachEvent) {//ie9-10

EleResize.on = function(ele, handler, context) {var handlers =ele.__z_resizeListeners;if (!handlers) {

handlers=[];

ele.__z_resizeListeners=handlers;

ele.__resizeTrigger__=ele;

ele.attachEvent('onresize', EleResize._handleResize);

}

handlers.push({

handler: handler,

context: context

});

};

EleResize.off= function(ele, handler, context) {var handlers =ele.__z_resizeListeners;if(handlers) {

EleResize._removeHandler(ele, handler, context);if (handlers.length === 0) {

ele.detachEvent('onresize', EleResize._handleResize);deleteele.__z_resizeListeners;

}

}

}

}else{

EleResize.on= function(ele, handler, context) {var handlers =ele.__z_resizeListeners;if (!handlers) {

handlers=[];

ele.__z_resizeListeners=handlers;if (getComputedStyle(ele, null).position === 'static') {

ele.style.position= 'relative';

}var obj =EleResize._createResizeTrigger(ele);

ele.__resizeTrigger__=obj;

obj.__resizeElement__=ele;

}

handlers.push({

handler: handler,

context: context

});

};

EleResize.off= function(ele, handler, context) {var handlers =ele.__z_resizeListeners;if(handlers) {

EleResize._removeHandler(ele, handler, context);if (handlers.length === 0) {var trigger =ele.__resizeTrigger__;if(trigger) {

trigger.contentDocument.defaultView.removeEventListener('resize', EleResize._handleResize);

ele.removeChild(trigger);deleteele.__resizeTrigger__;

}deleteele.__z_resizeListeners;

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值