docs: function addResizeListener(element, fn, context){
      var events = element[resizeHandlers];
  
      if (!events)
        events = element[resizeHandlers] = [];
  
      if (!events.resizeSensor_)
      {
        // NOTE: we don't use `onresize` event in IE, because it doesn't fire when
        // element inserting into document;
        // overflow/underflow events also not using as target for remove from browsers;
        // so using iframe is better solution for now
  
        var handler = function(){
          events.forEach(function(handler){
            handler.fn.call(handler.context, element);
          });
        };
  
        var init = function(){
          if (getComputedStyle(element, 'position') == 'static')
            element.style.position = 'relative';
  
          var document = sensor.contentDocument;
          var win = document.defaultView || document.parentWindow;
          win.onresize = handler;
          win.document.body.onresize = handler;
  
          handler();
        };
  
        var sensor = iframeSensorProto.cloneNode();
  
        // https://github.com/jugglinmike/srcdoc-polyfill/blob/master/srcdoc-polyfill.js
        // Explicitly set the iFrame's window.location for
        // compatability with IE9, which does not react to changes in
        // the `src` attribute when it is a `javascript:` URL, for
        // some reason
        if (sensor.contentWindow)
          sensor.contentWindow.location = STUB_DOCUMENT_SRC;
  
        if (sensor.attachEvent) // IE8 don't fire load event otherwise
          sensor.attachEvent('onload', init);
        else
          sensor.onload = init;
  
        element.appendChild(sensor);
  
        events.resizeSensor_ = sensor;
      }
  
      events.push({
        fn: fn,
        context: context || element
      });
  
      return element;
    }