UNPKG

vuescroll

Version:

A beautiful scrollbar based on Vue.js for PC and mobile.

47 lines (44 loc) 1.43 kB
// detect content size change import { eventCenter, isIE } from '../../util'; export function listenResize(element, callback) { return injectObject(element, callback); } function injectObject(element, callback) { if (element.hasResized) { return; } var OBJECT_STYLE = 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; padding: 0; margin: 0; opacity: 0; z-index: -1000; pointer-events: none;'; // define a wrap due to ie's zIndex bug var objWrap = document.createElement('div'); objWrap.style.cssText = OBJECT_STYLE; var object = document.createElement('object'); object.style.cssText = OBJECT_STYLE; object.type = 'text/html'; object.tabIndex = -1; object.onload = () => { eventCenter(object.contentDocument.defaultView, 'resize', callback); }; // https://github.com/wnr/element-resize-detector/blob/aafe9f7ea11d1eebdab722c7c5b86634e734b9b8/src/detection-strategy/object.js#L159 if (!isIE()) { object.data = 'about:blank'; } objWrap.isResizeElm = true; objWrap.appendChild(object); element.appendChild(objWrap); if (isIE()) { object.data = 'about:blank'; } return function destroy() { if (object.contentDocument) { eventCenter( object.contentDocument.defaultView, 'resize', callback, 'off' ); } element.removeChild(objWrap); element.hasResized = false; }; }