From 23792ce16f810611f9cec9a39f3b21ae7014bae0 Mon Sep 17 00:00:00 2001 From: neverland Date: Fri, 26 Apr 2019 15:35:45 +0800 Subject: [PATCH] [improvement] Field: optimize root scroll top (#3222) --- packages/field/index.js | 5 +++-- packages/utils/scroll.ts | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/field/index.js b/packages/field/index.js index 485254359..c43812183 100644 --- a/packages/field/index.js +++ b/packages/field/index.js @@ -1,7 +1,8 @@ -import { use, isObj, isDef, isIOS } from '../utils'; import Icon from '../icon'; import Cell from '../cell'; import { cellProps } from '../cell/shared'; +import { use, isObj, isDef, isIOS } from '../utils'; +import { getRootScrollTop } from '../utils/scroll'; const [sfc, bem] = use('field'); @@ -107,7 +108,7 @@ export default sfc({ // https://developers.weixin.qq.com/community/develop/doc/00044ae90742f8c82fb78fcae56800 /* istanbul ignore next */ if (isIOS()) { - window.scrollTo(0, window.pageYOffset); + window.scrollTo(0, getRootScrollTop()); } }, diff --git a/packages/utils/scroll.ts b/packages/utils/scroll.ts index 2ce9c8b22..579140069 100644 --- a/packages/utils/scroll.ts +++ b/packages/utils/scroll.ts @@ -29,6 +29,10 @@ export function setScrollTop(element: ScrollElement, value: number) { 'scrollTop' in element ? (element.scrollTop = value) : element.scrollTo(element.scrollX, value); } +export function getRootScrollTop(): number { + return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; +} + // get distance from element top to page top export function getElementTop(element: ScrollElement) { return (