javascript - 在移动版 Safari 中显示键盘时防止屏幕向上滚动

标签 javascript ios angularjs mobile-safari ios9

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

iOS9 移动版 safari 的问题: 聚焦文本区域时,会显示软键盘并覆盖 View 的下部。

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

最佳答案

这是一种可以防止滚动的方法。当您的输入处于焦点位置时,将 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 并将值设置到所需位置。

关于javascript - 在移动版 Safari 中显示键盘时防止屏幕向上滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33508356/

相关文章:

javascript - 错误: [$injector:unpr] Unknown provider: $stateProvider?

javascript - 默认情况下无法将整个 div 内容设置为只读,并且在单击编辑按钮时无法启用编辑

javascript - 扩展程序读取错误数据 + gt> 不起作用

javascript - 动态修改 CSS - 适用于 IE9,但不适用于 Chrome 和 Firefox

javascript - Object.create 中的对象属性值是常量吗?

ios - 我可以使用父类(super class)推送到同样继承的新 View Controller 吗?

ios - 使用选定的 TableView 项和选项卡栏 Controller 显示 View Controller

angularjs - 如何在 ASP.NET Web API 和 MVC 中使用相同的标识?

javascript - 具有固定列的数据表 missalinged

ios - 在 iOS 8.0 中使用数据库 Parse.com 登录用户的 TouchID