zoukankan      html  css  js  c++  java
  • 跨浏览器resize事件分析

    resize事件

    原生事件分析

    window一次resize事件:

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

    • Chrome 触发1次

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

    场景分析

    • window 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 ] );
    };
    

    长处:分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就可以满足一次调用就可以

  • 相关阅读:
    sublime开启vim模式
    git命令行界面
    搬进Github
    【POJ 2886】Who Gets the Most Candies?
    【UVA 1451】Average
    【CodeForces 625A】Guest From the Past
    【ZOJ 3480】Duck Typing
    【POJ 3320】Jessica's Reading Problemc(尺取法)
    【HDU 1445】Ride to School
    【HDU 5578】Friendship of Frog
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5244117.html
Copyright © 2011-2022 走看看