(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);