export default ( target: HTMLElement | Window | null, isTop?: boolean ): number => { if (typeof window === 'undefined') { return 0; } const isWindow = target === window; const prop = isTop ? 'pageYOffset' : 'pageXOffset'; const method = isTop ? 'scrollTop' : 'scrollLeft'; let value = isWindow ? (target as Window)[prop] : (target as HTMLElement)[method]; // ie6,7,8 standard mode if (isWindow && typeof value !== 'number') { value = (document.documentElement as HTMLElement)[method]; } return value; };