require.version = '0.0.9'; /** * */ define( "mk7/app", [ 'mk7/router', 'mk7/utils', 'mk7/url' ], function(router, utils, url) { var $$ = Dom7; var _app = { name : '', controllers : [], _options: { tapHold: !0, modalTitle: '', modalButtonOk: '确定', modalButtonCancel: '取消', modalPreloaderTitle : '正在加载...' }, options : {}, routes : {}, baseUrl : '', init: function() { this.bindEvents(); this.initMainView(); }, bindEvents: function() { window.onload = this.onDeviceReady() }, onDeviceReady: function() { this.receivedEvent("deviceready") }, receivedEvent: function(e) { switch (e) { case "deviceready": this.initMainView(); break; } }, initMainView: function() { this.options = utils.extend(this._options, this.options); window.app = new mk7(this.options); window.mainView = app.addView(".view-main"); }, bootstrap: function(options){ try { options = utils.extend({baseUrl : ''}, options); /** * 定义各个模块 */ require.config({ urlArgs : "v=" + require.version, paths: { 'mk7/accordion': "cmpts/accordion/accordion", 'mk7/autocomplete': "cmpts/autocomplete/autocomplete", 'mk7/calendar': "cmpts/calendar/calendar", 'mk7/forms': "cmpts/forms/forms", 'mk7/messages': "cmpts/messages/messages", 'mk7/modals': "cmpts/modals/modals", 'mk7/notifications': "cmpts/notifications/notifications", 'mk7/photo-browser': "cmpts/photo-browser/photo-browser", 'mk7/picker': "cmpts/picker/picker", 'mk7/progressbar': "cmpts/progressbar/progressbar", 'mk7/pull-to-refresh': "cmpts/pull-to-refresh/pull-to-refresh", 'mk7/push-state': "cmpts/push-state/push-state", 'mk7/scroll-toolbars': "cmpts/scroll-toolbars/scroll-toolbars", 'mk7/searchbar': "cmpts/searchbar/searchbar", 'mk7/slide-frame': "cmpts/slide-frame/slide-frame", 'mk7/smart-select': "cmpts/smart-select/smart-select", 'mk7/sortable': "cmpts/sortable/sortable", 'mk7/swipeout': "cmpts/swipeout/swipeout", 'mk7/swiper': "cmpts/swiper/swiper", 'mk7/tabs': "cmpts/tabs/tabs", 'mk7/virtual-list': "cmpts/virtual-list/virtual-list", 'mk7/jweixin': "https://res.wx.qq.com/open/js/jweixin-1.4.0", 'mk7/qqmap': "https://map.qq.com/api/js?v=2.exp&key=IJMBZ-MTWAS-XMYOM-6V3D5-HTR3Q-I7BI2", "mk7/uploadjs":"cmpts/uploadjs/uploadjs", }, shim: { 'mk7/accordion': {deps: [], exports: 'mk7/accordion'}, 'mk7/autocomplete': {deps: [,'mk7/searchbar'], exports: 'mk7/autocomplete'}, 'mk7/calendar': {deps: [,'mk7/modals'], exports: 'mk7/calendar'}, 'mk7/forms': {deps: [], exports: 'mk7/forms'}, 'mk7/messages': {deps: [], exports: 'mk7/messages'}, 'mk7/modals': {deps: [], exports: 'mk7/modals'}, 'mk7/notifications': {deps: [], exports: 'mk7/notifications'}, 'mk7/photo-browser': {deps: [,'mk7/swiper'], exports: 'mk7/photo-browser'}, 'mk7/picker': {deps: [,'mk7/modals'], exports: 'mk7/picker'}, 'mk7/progressbar': {deps: [], exports: 'mk7/progressbar'}, 'mk7/pull-to-refresh': {deps: [], exports: 'mk7/pull-to-refresh'}, 'mk7/push-state': {deps: [], exports: 'mk7/push-state'}, 'mk7/scroll-toolbars': {deps: [], exports: 'mk7/scroll-toolbars'}, 'mk7/searchbar': {deps: [], exports: 'mk7/searchbar'}, 'mk7/slide-frame': {deps: [], exports: 'mk7/slide-frame'}, 'mk7/smart-select': {deps: [], exports: 'mk7/smart-select'}, 'mk7/sortable': {deps: [], exports: 'mk7/sortable'}, 'mk7/swiper': {deps: [], exports: 'mk7/swiper'}, 'mk7/swipeout': {deps: [], exports: 'mk7/swipeout'}, 'mk7/tabs': {deps: [], exports: 'mk7/tabs'}, 'mk7/virtual-list': {deps: [], exports: 'mk7/virtual-list'}, 'mk7/jweixin': {deps: [], exports: 'mk7/jweixin'}, 'mk7/qqmap': {deps: [], exports: 'mk7/qqmap'}, 'mk7/uploadjs':{deps:[],exports:'mk7/uploadjs'}, } }); this.baseUrl = options.baseUrl; url.base = this.baseUrl; this.init(); this.preroute(); router.init(this.routes); } catch (e) { console.log(e); } }, preroute : function (){ $$("body").on("touchstart", function(e) { var t = $$(e.target), n = t.parents(".page-content"), r = t.parents(".picker-modal-inner"), i = t.parents(".toolbar"), o = t.parents(".modal"), u, a, f; //当这些元素全部不存在的时候,清除事件。 if (!n[0] && !r[0] && !i[0] && !o[0]){ // e. (); } else if (n[0] || r[0]) { u = n[0] ? n[0] : r[0], a = e.touches[0].pageY, f = u.scrollTop, f <= 0 && (u.scrollTop = 1), f + u.offsetHeight >= u.scrollHeight && (u.scrollTop = u.scrollHeight - u.offsetHeight - 1); } }); var u = navigator.userAgent; var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //这个判断 是不是ios手机 if(isiOS){ // iphone 有效 document.body.addEventListener('focusin', function(){ //软键盘弹出的事件处理 }) document.body.addEventListener('focusout', function(){ //软键盘收起的事件处理 window.scrollTo({top:0,left:0,behavior:"smooth"}); }) } else { //获取原窗口的高度 var originalHeight=document.documentElement.clientHeight ||document.body.clientHeight; // android 有效 window.onresize=function(){ //键盘弹起与隐藏都会引起窗口的高度发生变化 var resizeHeight=document.documentElement.clientHeight || document.body.clientHeight; if(resizeHeight-0 < originalHeight-0){ //当软键盘弹起,在此处操作 }else{ //当软键盘收起,在此处操作 window.scrollTo({top:0,left:0,behavior:"smooth"}); } } } }, runController : function (name, params) { var me = this; params = utils.extend({}, params); if(!this.name){ return; } // app name / controller name // 例如 user + / + index + -contrller var controllerClassName = this.name + '/' + name + '-controller'; console.log(controllerClassName); try { require([controllerClassName], function(c){ c.params = params; //me.addController(controllerClassName, c); return me._runController(name, c); }); } catch (e) { console.log(e); } }, afterRunController : function (){},//抽象方法,子类实现 _runController : function (name, c) { c.init(window.app); c.view = name; c.beforeRun(); var h = c.run(); c.afterRun(); if(window.app){ window.app.init(); } if(window.mainView){ window.app.initPage('.page'); } }, addController : function(name, object){ var c = this.controllers; var is = false; for(var i=0; i < c.length; i++){ if(c[i].name == name ){ this.controllers[i] = { name : name, object : object } is = true; } } if(false == is){ this.controllers.push({ name : name, object : object }); } }, getCachedController : function (name) { var c = this.controllers; for(var i=0; i < c.length; i++){ if(c[i].name == name ){ return c[i].object; } } return false; } }; return _app; } );