/** * mui.init * @param {type} $ * @returns {undefined} */ (function($) { $.global = $.options = { gestureConfig: { tap: true, doubletap: false, longtap: false, hold: false, flick: true, swipe: true, drag: true, pinch: false } }; /** * * @param {type} options * @returns {undefined} */ $.initGlobal = function(options) { $.options = $.extend(true, $.global, options); return this; }; var inits = {}; /** * 单页配置 初始化 * @param {object} options */ $.init = function(options) { $.options = $.extend(true, $.global, options || {}); $.ready(function() { $.doAction('inits', function(index, init) { var isInit = !!(!inits[init.name] || init.repeat); if (isInit) { init.handle.call($); inits[init.name] = true; } }); }); return this; }; /** * 增加初始化执行流程 * @param {function} init */ $.addInit = function(init) { return $.addAction('inits', init); }; /** * 处理html5版本subpages */ $.addInit({ name: 'iframe', index: 100, handle: function() { var options = $.options; var subpages = options.subpages || []; if (!$.os.plus && subpages.length) { //暂时只处理单个subpage。后续可以考虑支持多个subpage createIframe(subpages[0]); } } }); var createIframe = function(options) { var wrapper = document.createElement('div'); wrapper.className = $.className('iframe-wrapper'); var styles = options.styles || {}; if (typeof styles.top !== 'string') { styles.top = '0px'; } if (typeof styles.bottom !== 'string') { styles.bottom = '0px'; } wrapper.style.top = styles.top; wrapper.style.bottom = styles.bottom; var iframe = document.createElement('iframe'); iframe.src = options.url; iframe.id = options.id || options.url; iframe.name = iframe.id; wrapper.appendChild(iframe); document.body.appendChild(wrapper); //目前仅处理微信 $.os.wechat && handleScroll(wrapper, iframe); }; function handleScroll(wrapper, iframe) { var key = 'MUI_SCROLL_POSITION_' + document.location.href + '_' + iframe.src; var scrollTop = (parseFloat(localStorage.getItem(key)) || 0); if (scrollTop) { (function(y) { iframe.onload = function() { window.scrollTo(0, y); }; })(scrollTop); } setInterval(function() { var _scrollTop = window.scrollY; if (scrollTop !== _scrollTop) { localStorage.setItem(key, _scrollTop + ''); scrollTop = _scrollTop; } }, 100); }; $(function() { var classList = document.body.classList; var os = []; if ($.os.ios) { os.push({ os: 'ios', version: $.os.version }); classList.add($.className('ios')); } else if ($.os.android) { os.push({ os: 'android', version: $.os.version }); classList.add($.className('android')); } if ($.os.wechat) { os.push({ os: 'wechat', version: $.os.wechat.version }); classList.add($.className('wechat')); } if (os.length) { $.each(os, function(index, osObj) { var version = ''; var classArray = []; if (osObj.version) { $.each(osObj.version.split('.'), function(i, v) { version = version + (version ? '-' : '') + v; classList.add($.className(osObj.os + '-' + version)); }); } }); } }); })(mui);