resize事件

原生事件分析

window一次resize事件:

  • IE7 触发3次, IE8 触发2次, IE9 触发1次, IE10 触发1次

  • Chrome 触发1次

  • FF 触发2次
  • Opera 触发1次
  • Safari 触发1次

场景分析

  • window resize时。部分组件须要重置大小(一次)。部分组件不须要重置大小。

开源库分析

  • jquery-resize

长处:使用简便

  $('#div1').on('resize', function (e) {console.log('[div1] resize');})$('#div1').resize(function (e) {console.log('[div1] resize2');});

缺点:内部使用轮询,性能堪忧

function loopy() {// Start the polling loop, asynchronously.timeout_id = window[ str_setTimeout ](function(){// Iterate over all elements to which the 'resize' event is bound.elems.each(function(){var elem = $(this),width = elem.width(),height = elem.height(),data = $.data( this, str_data );// If element size has changed since the last time, update the element// data store and trigger the 'resize' event.if ( width !== data.w || height !== data.h ) {elem.trigger( str_resize, [ data.w = width, data.h = height ] );}});// Loop.loopy();}, jq_resize[ str_delay ] );
};
  • jquery-smartresize

长处:分Debounced和Throttled两种类型,类型明白

缺点:使用不算简易

$(window).on("debouncedresize", function( event ) {// Your event handler code goes here.
});// or...
$(window).on("throttledresize", function( event ) {// Your event handler code goes here.
});// unbind at will
$(window).off( "debouncedresize" );

结论

大多数场景使用jquery-smartresize的Debounced就可以满足一次调用就可以

转载于:https://www.cnblogs.com/bhlsheji/p/5244117.html

跨浏览器resize事件分析相关推荐

  1. 一些js代码,自己备用的。高手不要笑话我。。(跨浏览器基础事件,浏览器检测,判断浏览器的名称、版本号、操作系统)...

    跨浏览器基础事件 View Code 1 //跨浏览器添加事件 2 function addEvent(obj, type, fn) { 3 if (obj.addEventListener) { 4 ...

  2. 原生JS实现跨浏览器的事件处理程序

    <!doctype html> <html lang="en"> <head><meta charset="UTF-8" ...

  3. IFE-16 addEventHandler跨浏览器实现事件绑定

    /** * addEventHandler方法 * 跨浏览器实现事件绑定 */ function addEventHandler(ele, event, hanlder) {if (ele.addEv ...

  4. JavaScript --- 跨浏览器的事件对象

    var EventUtil={addHandler: function(element, type, handler){ // 添加事件方法if (element.addEventListener){ ...

  5. addevent()实现跨浏览器绑定事件

    绑定事件一般有三种方式:传统绑定事件,IE绑定事件,W3C绑定事件.传统绑定存在可读性问题,this问题,覆盖问题.为实现跨浏览器绑定事件,我们采用自定义方法addEvent().代码如下: //跨浏 ...

  6. javascript --- DOM0级、DOM2级、跨浏览器 的事件处理程序

    DOM0级事件处理程序: // 使用DOM0级方法指定的事件处理程序被认为是元素的方法 // 这个时候的事件处理程序是在元素的作用域中运行: <div id = "myBtn" ...

  7. 跨浏览器的事件处理程序

    我们第一个要创建的方法是addHandler() 它的职责是视情况分别使用DOM0级方法.DOM2级方法或者IE方法来添加事件.这个方法属于一个名叫EventUtil的对象.addHandler() ...

  8. JavaScript --- 跨浏览器的事件处理程序

    var EventUtil = {addHandler: function(element, type, handler) { // 添加事件处理程序if (element.addEventListe ...

  9. dean edward大神的跨浏览器addEvent事件

    2019独角兽企业重金招聘Python工程师标准>>> function addEvent(element, type, handler) {// assign each event ...

最新文章

  1. VRRP在企业网中的应用(H3C设备)
  2. 刷墙(左蓝右红或同一色)
  3. jQuery中$.fn的用法示例介绍
  4. angularjs中$http模块发送post请求request payload转form data
  5. VC返回文件所在的路径
  6. 字体单独设置样式_Glyphs 官方教程 | 字体命名
  7. 数字人民币这一年,互联网企业做了什么?
  8. ubuntu16.04 运行dso问题梳理
  9. elk替代_Golang-logrus简单的日志收集系统(替代ELKB)
  10. 随机森林和GBDT的几个核心问题
  11. 在Sun Java System Web Server上使用Quercus运行PHP
  12. ❤️❤️新生代农民工熬夜整理Python入门教程,包教包会!附源码❤️❤️
  13. Matlab/simulink 2018a利用 powergui 进行FFT分析(傅里叶分析谐波)
  14. 知行合一 中国古代小说鉴赏 大作业
  15. 线性可变位移传感器行业调研报告 - 市场现状分析与发展前景预测
  16. dropify图片上传插件的上传数据
  17. 微信热搜 API数据接口
  18. ubuntu下重启tomcat
  19. Hey Future!
  20. 未能找到类型或命名空间名称“XXXX”(是否缺少 using 指令或程序集引用?)

热门文章

  1. Jquery弹出层插件,非常好用绚丽Lee dialog 1.0
  2. (转)Uncaught TypeError: Cannot set property 'innerHTML' of null
  3. 申通快递机器人上岗_【峰暴】618, 数万台机器人上岗为您服务!
  4. 依赖倒置原则_C#教您一步步摆脱面向过程:依赖倒置
  5. 三维计算机视觉(六)--3DSC(3D形状上下文特征)
  6. finebi跳转到本地html文件,组件跳转- FineReport帮助文档|报表开发|报表使用|学习教程...
  7. 分布式技术是大规模应用的最后一个考验
  8. c++反转字符,算法优化与实现
  9. python多线程与多进程
  10. Ansible之roles使用