diff --git a/src/field/index.js b/src/field/index.js index d5ac2d1a0..970f46bd2 100644 --- a/src/field/index.js +++ b/src/field/index.js @@ -2,9 +2,8 @@ import Icon from '../icon'; import Cell from '../cell'; import { cellProps } from '../cell/shared'; import { preventDefault } from '../utils/dom/event'; -import { getRootScrollTop, setRootScrollTop } from '../utils/dom/scroll'; +import { resetScroll } from '../utils/dom/reset-scroll'; import { createNamespace, isObj, isDef, addUnit } from '../utils'; -import { isIOS } from '../utils/validate/system'; const [createComponent, bem] = createNamespace('field'); @@ -134,13 +133,7 @@ export default createComponent({ onBlur(event) { this.focused = false; this.$emit('blur', event); - - // Hack for iOS12 page scroll - // https://developers.weixin.qq.com/community/develop/doc/00044ae90742f8c82fb78fcae56800 - /* istanbul ignore next */ - if (isIOS()) { - setRootScrollTop(getRootScrollTop()); - } + resetScroll(); }, onClick(event) { diff --git a/src/stepper/index.js b/src/stepper/index.js index 5c6224d9d..f9c7939c6 100644 --- a/src/stepper/index.js +++ b/src/stepper/index.js @@ -1,6 +1,5 @@ import { createNamespace, isDef, addUnit } from '../utils'; -import { getRootScrollTop, setRootScrollTop } from '../utils/dom/scroll'; -import { isIOS } from '../utils/validate/system'; +import { resetScroll } from '../utils/dom/reset-scroll'; const [createComponent, bem] = createNamespace('stepper'); @@ -156,12 +155,7 @@ export default createComponent({ event.target.value = this.currentValue; } - // Hack for iOS12 page scroll - // https://developers.weixin.qq.com/community/develop/doc/00044ae90742f8c82fb78fcae56800 - /* istanbul ignore next */ - if (isIOS()) { - setRootScrollTop(getRootScrollTop()); - } + resetScroll(); }, longPressStep() { diff --git a/src/utils/dom/reset-scroll.ts b/src/utils/dom/reset-scroll.ts new file mode 100644 index 000000000..8cdf18a40 --- /dev/null +++ b/src/utils/dom/reset-scroll.ts @@ -0,0 +1,16 @@ +/** + * Hack for iOS12 page scroll + * https://developers.weixin.qq.com/community/develop/doc/00044ae90742f8c82fb78fcae56800 + */ + +import { isIOS as checkIsIOS } from '../validate/system'; +import { getRootScrollTop, setRootScrollTop } from './scroll'; + +const isIOS = checkIsIOS(); + +/* istanbul ignore next */ +export function resetScroll() { + if (isIOS) { + setRootScrollTop(getRootScrollTop()); + } +}