【发布时间】:2016-02-04 03:37:03
【问题描述】:
我正在构建一个在一个视图底部有一个 Angularjs 应用程序。
iOS9 上移动 safari 的问题: 当聚焦 textarea 时,软键盘会显示并覆盖视图的下部。
当键盘可见时如何向上滚动页面以不覆盖内容(即文本区域)?
【问题讨论】:
标签: javascript ios angularjs mobile-safari ios9
我正在构建一个在一个视图底部有一个 Angularjs 应用程序。
iOS9 上移动 safari 的问题: 当聚焦 textarea 时,软键盘会显示并覆盖视图的下部。
当键盘可见时如何向上滚动页面以不覆盖内容(即文本区域)?
【问题讨论】:
标签: javascript ios angularjs mobile-safari ios9
这是防止滚动的一种方法。当您的输入成为焦点时,将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 并将值设置为所需的位置。
【讨论】: