【问题标题】:Prevent screen scrolling up when keyboard is shown in mobile Safari移动 Safari 中显示键盘时防止屏幕向上滚动
【发布时间】:2016-02-04 03:37:03
【问题描述】:

我正在构建一个在一个视图底部有一个 Angularjs 应用程序。

iOS9 上移动 safari 的问题: 当聚焦 textarea 时,软键盘会显示并覆盖视图的下部。

当键盘可见时如何向上滚动页面以不覆盖内容(即文本区域)?

【问题讨论】:

    标签: javascript ios angularjs mobile-safari ios9


    【解决方案1】:

    这是防止滚动的一种方法。当您的输入成为焦点时,将overflow:hidden 添加到文档正文。

        function toArray (collection) {
            return Array.prototype.slice.call(collection);
        }
    
        function noScroll (event) {
            if (event.type === 'focus') {
                document.body.classList.add('no-scroll');
            }
    
            else if (event.type === 'blur') {
                document.body.classList.remove('no-scroll');
            }
        }
    
        var inputs = toArray(document.querySelectorAll('input'));
    
    
        inputs.forEach(function(input){
            input.addEventListener('focus',noScroll,false);
            input.addEventListener('blur',noScroll,false);
        });
    .no-scroll {
        overflow:hidden;
    }

    要向上滚动页面,您可以在输入处于焦点时使用 document.body.scrollTop 并将值设置为所需的位置。

    【讨论】:

    • 非常感谢,会检查一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多