You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.0 KiB
57 lines
2.0 KiB
(function($, document) {
|
|
$(function() {
|
|
if (!$.os.ios) {
|
|
return;
|
|
}
|
|
var CLASS_FOCUSIN = $.className('focusin');
|
|
var CLASS_BAR_TAB = $.className('bar-tab');
|
|
var CLASS_BAR_FOOTER = $.className('bar-footer');
|
|
var CLASS_BAR_FOOTER_SECONDARY = $.className('bar-footer-secondary');
|
|
var CLASS_BAR_FOOTER_SECONDARY_TAB = $.className('bar-footer-secondary-tab');
|
|
// var content = document.querySelector('.' + CLASS_CONTENT);
|
|
// if (content) {
|
|
// document.body.insertBefore(content, document.body.firstElementChild);
|
|
// }
|
|
document.addEventListener('focusin', function(e) {
|
|
if ($.os.plus) { //在父webview里边不fix
|
|
if (window.plus) {
|
|
if (plus.webview.currentWebview().children().length > 0) {
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
var target = e.target;
|
|
//TODO 需考虑所有键盘弹起的情况
|
|
if (target.tagName && (target.tagName === 'TEXTAREA' || (target.tagName === 'INPUT' && (target.type === 'text' || target.type === 'search' || target.type === 'number')))) {
|
|
if (target.disabled || target.readOnly) {
|
|
return;
|
|
}
|
|
document.body.classList.add(CLASS_FOCUSIN);
|
|
var isFooter = false;
|
|
for (; target && target !== document; target = target.parentNode) {
|
|
var classList = target.classList;
|
|
if (classList && classList.contains(CLASS_BAR_TAB) || classList.contains(CLASS_BAR_FOOTER) || classList.contains(CLASS_BAR_FOOTER_SECONDARY) || classList.contains(CLASS_BAR_FOOTER_SECONDARY_TAB)) {
|
|
isFooter = true;
|
|
break;
|
|
}
|
|
}
|
|
if (isFooter) {
|
|
var scrollTop = document.body.scrollHeight;
|
|
var scrollLeft = document.body.scrollLeft;
|
|
setTimeout(function() {
|
|
window.scrollTo(scrollLeft, scrollTop);
|
|
}, 20);
|
|
}
|
|
}
|
|
});
|
|
document.addEventListener('focusout', function(e) {
|
|
var classList = document.body.classList;
|
|
if (classList.contains(CLASS_FOCUSIN)) {
|
|
classList.remove(CLASS_FOCUSIN);
|
|
setTimeout(function() {
|
|
window.scrollTo(document.body.scrollLeft, document.body.scrollTop);
|
|
}, 20);
|
|
}
|
|
});
|
|
});
|
|
})(mui, document); |