ant-design-vue/components/_util/getScroll.ts

26 lines
792 B
TypeScript
Raw Normal View History

2020-09-28 03:47:15 +00:00
export function isWindow(obj: any) {
return obj !== null && obj !== undefined && obj === obj.window;
}
export default function getScroll(target: HTMLElement | Window | Document | null, top: Boolean) {
2017-12-07 10:33:33 +00:00
if (typeof window === 'undefined') {
2019-01-12 03:33:27 +00:00
return 0;
2017-12-07 10:33:33 +00:00
}
2019-01-12 03:33:27 +00:00
const method = top ? 'scrollTop' : 'scrollLeft';
2020-09-28 03:47:15 +00:00
let result = 0;
if (isWindow(target)) {
result = (target as Window)[top ? 'pageYOffset' : 'pageXOffset'];
} else if (target instanceof Document) {
result = target.documentElement[method];
} else if (target) {
result = (target as HTMLElement)[method];
2017-12-07 10:33:33 +00:00
}
2020-09-28 03:47:15 +00:00
if (target && !isWindow(target) && typeof result !== 'number') {
result = ((target as HTMLElement).ownerDocument || (target as Document)).documentElement[
method
];
}
return result;
2017-12-07 10:33:33 +00:00
}