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