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 (