mui_app_rails 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/mui_app_rails/mui.js +6013 -1
  3. data/app/assets/javascripts/mui_app_rails/mui.min.js +8 -0
  4. data/app/assets/javascripts/mui_app_rails.js +1 -1
  5. data/app/assets/stylesheets/mui_app_rails/mui.css +3742 -0
  6. data/app/assets/stylesheets/mui_app_rails/mui.min.css +5 -0
  7. data/lib/mui_app_rails/engine.rb +12 -0
  8. data/lib/mui_app_rails/version.rb +1 -1
  9. data/lib/mui_app_rails.rb +1 -1
  10. metadata +17 -99
  11. data/app/assets/javascripts/mui_app_rails/actions.js +0 -26
  12. data/app/assets/javascripts/mui_app_rails/ajax.plugin.js +0 -3
  13. data/app/assets/javascripts/mui_app_rails/input.plugin.js +0 -232
  14. data/app/assets/javascripts/mui_app_rails/modals.js +0 -37
  15. data/app/assets/javascripts/mui_app_rails/mui.active.js +0 -30
  16. data/app/assets/javascripts/mui_app_rails/mui.ajax.5+.js +0 -27
  17. data/app/assets/javascripts/mui_app_rails/mui.ajax.js +0 -277
  18. data/app/assets/javascripts/mui_app_rails/mui.animation.js +0 -39
  19. data/app/assets/javascripts/mui_app_rails/mui.animationframe.js +0 -72
  20. data/app/assets/javascripts/mui_app_rails/mui.back.5+.js +0 -108
  21. data/app/assets/javascripts/mui_app_rails/mui.back.js +0 -56
  22. data/app/assets/javascripts/mui_app_rails/mui.class.js +0 -40
  23. data/app/assets/javascripts/mui_app_rails/mui.class.scroll.js +0 -894
  24. data/app/assets/javascripts/mui_app_rails/mui.class.scroll.pullrefresh.js +0 -150
  25. data/app/assets/javascripts/mui_app_rails/mui.class.scroll.slider.js +0 -361
  26. data/app/assets/javascripts/mui_app_rails/mui.class.scroll.slider.old.js +0 -332
  27. data/app/assets/javascripts/mui_app_rails/mui.detect.5+.js +0 -18
  28. data/app/assets/javascripts/mui_app_rails/mui.detect.js +0 -50
  29. data/app/assets/javascripts/mui_app_rails/mui.dialog.alert.js +0 -27
  30. data/app/assets/javascripts/mui_app_rails/mui.dialog.confirm.js +0 -27
  31. data/app/assets/javascripts/mui_app_rails/mui.dialog.prompt.js +0 -33
  32. data/app/assets/javascripts/mui_app_rails/mui.dialog.toast.js +0 -20
  33. data/app/assets/javascripts/mui_app_rails/mui.event.js +0 -160
  34. data/app/assets/javascripts/mui_app_rails/mui.fixed.animation.js +0 -22
  35. data/app/assets/javascripts/mui_app_rails/mui.fixed.classlist.js +0 -50
  36. data/app/assets/javascripts/mui_app_rails/mui.fixed.fastclick.js +0 -64
  37. data/app/assets/javascripts/mui_app_rails/mui.fixed.js +0 -40
  38. data/app/assets/javascripts/mui_app_rails/mui.fixed.keyboard.js +0 -56
  39. data/app/assets/javascripts/mui_app_rails/mui.gestures.drag.js +0 -48
  40. data/app/assets/javascripts/mui_app_rails/mui.gestures.flick.js +0 -30
  41. data/app/assets/javascripts/mui_app_rails/mui.gestures.hold.js +0 -41
  42. data/app/assets/javascripts/mui_app_rails/mui.gestures.js +0 -207
  43. data/app/assets/javascripts/mui_app_rails/mui.gestures.longtap.js +0 -43
  44. data/app/assets/javascripts/mui_app_rails/mui.gestures.swipe.js +0 -29
  45. data/app/assets/javascripts/mui_app_rails/mui.gestures.tap.js +0 -40
  46. data/app/assets/javascripts/mui_app_rails/mui.init.5+.js +0 -441
  47. data/app/assets/javascripts/mui_app_rails/mui.init.js +0 -100
  48. data/app/assets/javascripts/mui_app_rails/mui.init.pullrefresh.js +0 -57
  49. data/app/assets/javascripts/mui_app_rails/mui.jsonp.js +0 -108
  50. data/app/assets/javascripts/mui_app_rails/mui.layout.js +0 -22
  51. data/app/assets/javascripts/mui_app_rails/mui.namespace.js +0 -35
  52. data/app/assets/javascripts/mui_app_rails/mui.number.js +0 -93
  53. data/app/assets/javascripts/mui_app_rails/mui.offcanvas.js +0 -497
  54. data/app/assets/javascripts/mui_app_rails/mui.pullrefresh.js +0 -157
  55. data/app/assets/javascripts/mui_app_rails/mui.target.js +0 -58
  56. data/app/assets/javascripts/mui_app_rails/mui.view.js +0 -172
  57. data/app/assets/javascripts/mui_app_rails/popovers.js +0 -278
  58. data/app/assets/javascripts/mui_app_rails/pullrefresh.5+.js +0 -238
  59. data/app/assets/javascripts/mui_app_rails/push.js +0 -479
  60. data/app/assets/javascripts/mui_app_rails/segmented-controllers.js +0 -99
  61. data/app/assets/javascripts/mui_app_rails/sliders.js +0 -362
  62. data/app/assets/javascripts/mui_app_rails/switches.js +0 -165
  63. data/app/assets/javascripts/mui_app_rails/tableviews.js +0 -512
  64. data/app/assets/stylesheets/mui_app_rails/badges.scss +0 -88
  65. data/app/assets/stylesheets/mui_app_rails/bars.scss +0 -312
  66. data/app/assets/stylesheets/mui_app_rails/base.scss +0 -196
  67. data/app/assets/stylesheets/mui_app_rails/buttons.scss +0 -205
  68. data/app/assets/stylesheets/mui_app_rails/cards.scss +0 -62
  69. data/app/assets/stylesheets/mui_app_rails/forms.scss +0 -452
  70. data/app/assets/stylesheets/mui_app_rails/fullscreen.scss +0 -35
  71. data/app/assets/stylesheets/mui_app_rails/grid.scss +0 -75
  72. data/app/assets/stylesheets/mui_app_rails/hack.scss +0 -14
  73. data/app/assets/stylesheets/mui_app_rails/icon.scss +0 -170
  74. data/app/assets/stylesheets/mui_app_rails/iscroll.scss +0 -43
  75. data/app/assets/stylesheets/mui_app_rails/loadings.scss +0 -111
  76. data/app/assets/stylesheets/mui_app_rails/mixins.scss +0 -212
  77. data/app/assets/stylesheets/mui_app_rails/modals.scss +0 -34
  78. data/app/assets/stylesheets/mui_app_rails/mui.scss +0 -46
  79. data/app/assets/stylesheets/mui_app_rails/normalize.scss +0 -425
  80. data/app/assets/stylesheets/mui_app_rails/number.scss +0 -70
  81. data/app/assets/stylesheets/mui_app_rails/off-canvas.scss +0 -84
  82. data/app/assets/stylesheets/mui_app_rails/os.scss +0 -12
  83. data/app/assets/stylesheets/mui_app_rails/pagination.scss +0 -155
  84. data/app/assets/stylesheets/mui_app_rails/popovers.scss +0 -198
  85. data/app/assets/stylesheets/mui_app_rails/pullrefreshs.scss +0 -98
  86. data/app/assets/stylesheets/mui_app_rails/push.scss +0 -63
  87. data/app/assets/stylesheets/mui_app_rails/scroll.scss +0 -95
  88. data/app/assets/stylesheets/mui_app_rails/segmented-controls.scss +0 -150
  89. data/app/assets/stylesheets/mui_app_rails/slider-cell.scss +0 -20
  90. data/app/assets/stylesheets/mui_app_rails/sliders.scss +0 -133
  91. data/app/assets/stylesheets/mui_app_rails/switches.scss +0 -115
  92. data/app/assets/stylesheets/mui_app_rails/table-views.scss +0 -482
  93. data/app/assets/stylesheets/mui_app_rails/toast.scss +0 -16
  94. data/app/assets/stylesheets/mui_app_rails/type.scss +0 -23
  95. data/app/assets/stylesheets/mui_app_rails/variables.scss +0 -64
@@ -1,441 +0,0 @@
1
- /**
2
- * mui.init 5+
3
- * @param {type} $
4
- * @returns {undefined}
5
- */
6
- (function($) {
7
- var defaultOptions = {
8
- swipeBack: false,
9
- preloadPages: [], //5+ lazyLoad webview
10
- preloadLimit: 10, //预加载窗口的数量限制(一旦超出,先进先出)
11
- keyEventBind: {
12
- backbutton: true,
13
- menubutton: true
14
- }
15
- };
16
-
17
- //默认页面动画
18
- var defaultShow = {
19
- autoShow: true,
20
- duration: $.os.ios ? 200 : 100,
21
- aniShow: 'slide-in-right'
22
- };
23
- //若执行了显示动画初始化操作,则要覆盖默认配置
24
- if ($.options.show) {
25
- defaultShow = $.extend(true, defaultShow, $.options.show);
26
- }
27
-
28
- $.currentWebview = null;
29
- $.isHomePage = false;
30
-
31
- $.extend(true, $.global, defaultOptions);
32
- $.extend(true, $.options, defaultOptions);
33
- /**
34
- * 等待动画配置
35
- * @param {type} options
36
- * @returns {Object}
37
- */
38
- $.waitingOptions = function(options) {
39
- return $.extend({
40
- autoShow: true,
41
- title: ''
42
- }, options);
43
- };
44
- /**
45
- * 窗口显示配置
46
- * @param {type} options
47
- * @returns {Object}
48
- */
49
- $.showOptions = function(options) {
50
- return $.extend(defaultShow, options);
51
- };
52
- /**
53
- * 窗口默认配置
54
- * @param {type} options
55
- * @returns {Object}
56
- */
57
- $.windowOptions = function(options) {
58
- return $.extend({
59
- scalable: false,
60
- bounce: "" //vertical
61
- }, options);
62
- };
63
- /**
64
- * plusReady
65
- * @param {type} callback
66
- * @returns {_L6.$}
67
- */
68
- $.plusReady = function(callback) {
69
- if (window.plus) {
70
- callback();
71
- } else {
72
- document.addEventListener("plusready", function() {
73
- callback();
74
- }, false);
75
- }
76
- return this;
77
- };
78
- /**
79
- * 5+ event(5+没提供之前我自己实现)
80
- * @param {type} webview
81
- * @param {type} eventType
82
- * @param {type} data
83
- * @returns {undefined}
84
- */
85
- $.fire = function(webview, eventType, data) {
86
- if (webview) {
87
- webview.evalJS("typeof mui!=='undefined'&&mui.receive('" + eventType + "','" + JSON.stringify(data || {}).replace(/\'/g, "\\u0027").replace(/\\/g, "\\u005c") + "')");
88
- }
89
- };
90
- /**
91
- * 5+ event(5+没提供之前我自己实现)
92
- * @param {type} eventType
93
- * @param {type} data
94
- * @returns {undefined}
95
- */
96
- $.receive = function(eventType, data) {
97
- if (eventType) {
98
- data = JSON.parse(data);
99
- $.trigger(document, eventType, data);
100
- }
101
- };
102
- var triggerPreload = function(webview) {
103
- if (!webview.preloaded) {
104
- $.fire(webview, 'preload');
105
- var list = webview.children();
106
- for (var i = 0; i < list.length; i++) {
107
- $.fire(list[i], 'preload');
108
- }
109
- webview.preloaded = true;
110
- }
111
- };
112
- var trigger = function(webview, eventType, timeChecked) {
113
- if (timeChecked) {
114
- if (!webview[eventType + 'ed']) {
115
- $.fire(webview, eventType);
116
- var list = webview.children();
117
- for (var i = 0; i < list.length; i++) {
118
- $.fire(list[i], eventType);
119
- }
120
- webview[eventType + 'ed'] = true;
121
- }
122
- } else {
123
- $.fire(webview, eventType);
124
- var list = webview.children();
125
- for (var i = 0; i < list.length; i++) {
126
- $.fire(list[i], eventType);
127
- }
128
- }
129
-
130
- };
131
- /**
132
- * 打开新窗口
133
- * @param {string} url 要打开的页面地址
134
- * @param {string} id 指定页面ID
135
- * @param {object} options 可选:参数,等待,窗口,显示配置{params:{},waiting:{},styles:{},show:{}}
136
- */
137
- $.openWindow = function(url, id, options) {
138
-
139
- if (!window.plus) {
140
- return;
141
- }
142
- if (typeof url === 'object') {
143
- options = url;
144
- url = options.url;
145
- id = options.id || url;
146
- } else {
147
- if (typeof id === 'object') {
148
- options = id;
149
- id = url;
150
- } else {
151
- id = id || url;
152
- }
153
- }
154
- options = options || {};
155
- var params = options.params || {};
156
- var webview, nShow, nWaiting;
157
- if ($.webviews[id]) { //已缓存
158
- var webviewCache = $.webviews[id];
159
- webview = webviewCache.webview;
160
- //需要处理用户手动关闭窗口的情况,此时webview应该是空的;
161
- if (!webview || !webview.getURL()) {
162
- //再次新建一个webview;
163
- options = $.extend(options, {
164
- id: id,
165
- url: url,
166
- preload: true
167
- }, true);
168
- webview = $.createWindow(options);
169
- }
170
- //每次show都需要传递动画参数;
171
- //预加载的动画参数优先级:openWindow配置>preloadPages配置>mui默认配置;
172
- nShow = webviewCache.show;
173
- nShow = options.show ? $.extend(nShow, options.show) : nShow;
174
- webview.show(nShow.aniShow, nShow.duration, function() {
175
- triggerPreload(webview);
176
- trigger(webview, 'pagebeforeshow', false);
177
- });
178
-
179
- webviewCache.afterShowMethodName && webview.evalJS(webviewCache.afterShowMethodName + '(\'' + JSON.stringify(params) + '\')');
180
- return webview;
181
- } else { //新窗口
182
- //显示waiting
183
- var waitingConfig = $.waitingOptions(options.waiting);
184
- if (waitingConfig.autoShow) {
185
- nWaiting = plus.nativeUI.showWaiting(waitingConfig.title, waitingConfig.options);
186
- }
187
- //创建页面
188
- options = $.extend(options, {
189
- id: id,
190
- url: url
191
- });
192
- webview = $.createWindow(options);
193
- //显示
194
- nShow = $.showOptions(options.show);
195
- if (nShow.autoShow) {
196
- webview.addEventListener("loaded", function() {
197
- //关闭等待框
198
- if (nWaiting) {
199
- nWaiting.close();
200
- }
201
- //显示页面
202
- webview.show(nShow.aniShow, nShow.duration, function() {
203
- triggerPreload(webview);
204
- trigger(webview, 'pagebeforeshow', false);
205
- });
206
- webview.showed = true;
207
- options.afterShowMethodName && webview.evalJS(options.afterShowMethodName + '(\'' + JSON.stringify(params) + '\')');
208
- }, false);
209
- }
210
- }
211
- return webview;
212
- };
213
- /**
214
- * 根据配置信息创建一个webview
215
- * @param {type} options
216
- * @param {type} isCreate
217
- * @returns {webview}
218
- */
219
- $.createWindow = function(options, isCreate) {
220
- if (!window.plus) {
221
- return;
222
- }
223
- var id = options.id || options.url;
224
- var webview;
225
- if (options.preload) {
226
- if ($.webviews[id] && $.webviews[id].webview.getURL()) { //已经cache
227
- webview = $.webviews[id].webview;
228
- } else { //新增预加载窗口
229
- //preload
230
- webview = plus.webview.create(options.url, id, $.windowOptions(options.styles), $.extend({
231
- preload: true
232
- }, options.extras));
233
- if (options.subpages) {
234
- $.each(options.subpages, function(index, subpage) {
235
- //TODO 子窗口也可能已经创建,比如公用模板的情况;
236
- var subWebview = plus.webview.create(subpage.url, subpage.id || subpage.url, $.windowOptions(subpage.styles), $.extend({
237
- preload: true
238
- }, subpage.extras));
239
- webview.append(subWebview);
240
- });
241
- }
242
- }
243
-
244
- //TODO 理论上,子webview也应该计算到预加载队列中,但这样就麻烦了,要退必须退整体,否则可能出现问题;
245
- $.webviews[id] = {
246
- webview: webview, //目前仅preload的缓存webview
247
- preload: true,
248
- show: $.showOptions(options.show),
249
- afterShowMethodName: options.afterShowMethodName //就不应该用evalJS。应该是通过事件消息通讯
250
- };
251
- //索引该预加载窗口
252
- var preloads = $.data.preloads;
253
- var index = preloads.indexOf(id);
254
- if (~index) { //删除已存在的(变相调整插入位置)
255
- preloads.splice(index, 1);
256
- }
257
- preloads.push(id);
258
- if (preloads.length > $.options.preloadLimit) {
259
- //先进先出
260
- var first = $.data.preloads.shift();
261
- var webviewCache = $.webviews[first];
262
- if (webviewCache && webviewCache.webview) {
263
- //需要将自己打开的所有页面,全部close;
264
- //关闭该预加载webview
265
- $.closeAll(webviewCache.webview);
266
- }
267
- //删除缓存
268
- delete $.webviews[first];
269
- }
270
- } else {
271
- if (isCreate !== false) { //直接创建非预加载窗口
272
- webview = plus.webview.create(options.url, id, $.windowOptions(options.styles), options.extras);
273
- if (options.subpages) {
274
- $.each(options.subpages, function(index, subpage) {
275
- var subWebview = plus.webview.create(subpage.url, subpage.id || subpage.url, $.windowOptions(subpage.styles), subpage.extras);
276
- webview.append(subWebview);
277
- });
278
- }
279
- }
280
- }
281
- return webview;
282
- };
283
-
284
- /**
285
- * 预加载
286
- */
287
- $.preload = function(options) {
288
- //调用预加载函数,不管是否传递preload参数,强制变为true
289
- if (!options.preload) {
290
- options.preload = true;
291
- }
292
- return $.createWindow(options);
293
- };
294
-
295
- /**
296
- *关闭当前webview打开的所有webview;
297
- */
298
- $.closeOpened = function(webview) {
299
- var opened = webview.opened();
300
- if (opened) {
301
- for (var i = 0, len = opened.length; i < len; i++) {
302
- var openedWebview = opened[i];
303
- var open_open = openedWebview.opened();
304
- if (open_open && open_open.length > 0) {
305
- $.closeOpened(openedWebview);
306
- } else {
307
- //如果直接孩子节点,就不用关闭了,因为父关闭的时候,会自动关闭子;
308
- if (openedWebview.parent() !== webview) {
309
- openedWebview.close('none');
310
- }
311
- }
312
- }
313
- }
314
- };
315
- $.closeAll = function(webview, aniShow) {
316
- $.closeOpened(webview);
317
- if (aniShow) {
318
- webview.close(aniShow);
319
- } else {
320
- webview.close();
321
- }
322
- };
323
-
324
- /**
325
- * 批量创建webview
326
- * @param {type} options
327
- * @returns {undefined}
328
- */
329
- $.createWindows = function(options) {
330
- $.each(options, function(index, option) {
331
- //初始化预加载窗口(创建)和非预加载窗口(仅配置,不创建)
332
- $.createWindow(option, false);
333
- });
334
- };
335
- /**
336
- * 创建当前页面的子webview
337
- * @param {type} options
338
- * @returns {webview}
339
- */
340
- $.appendWebview = function(options) {
341
- if (!window.plus) {
342
- return;
343
- }
344
- var id = options.id || options.url;
345
- var webview;
346
- if (!$.webviews[id]) { //保证执行一遍
347
- //TODO 这里也有隐患,比如某个webview不是作为subpage创建的,而是作为target webview的话;
348
- webview = plus.webview.create(options.url, id, options.styles, options.extras);
349
- //之前的实现方案:子窗口loaded之后再append到父窗口中;
350
- //问题:部分子窗口loaded事件发生较晚,此时执行父窗口的children方法会返回空,导致父子通讯失败;
351
- // 比如父页面执行完preload事件后,需触发子页面的preload事件,此时未append的话,就无法触发;
352
- //修改方式:不再监控loaded事件,直接append
353
- //by chb@20150521
354
- // webview.addEventListener('loaded', function() {
355
- plus.webview.currentWebview().append(webview);
356
- // });
357
- $.webviews[id] = options;
358
- }
359
- return webview;
360
- };
361
-
362
- //全局webviews
363
- $.webviews = {};
364
- //预加载窗口索引
365
- $.data.preloads = [];
366
- //$.currentWebview
367
- $.plusReady(function() {
368
- $.currentWebview = plus.webview.currentWebview();
369
- });
370
- $.registerInit({
371
- name: '5+',
372
- index: 100,
373
- handle: function() {
374
- var options = $.options;
375
- var subpages = options.subpages || [];
376
- if ($.os.plus) {
377
- $.plusReady(function() {
378
- //TODO 这里需要判断一下,最好等子窗口加载完毕后,再调用主窗口的show方法;
379
- //或者:在openwindow方法中,监听实现;
380
- $.each(subpages, function(index, subpage) {
381
- $.appendWebview(subpage);
382
- });
383
- //判断是否首页
384
- if (plus.webview.currentWebview() === plus.webview.getWebviewById(plus.runtime.appid)) {
385
- $.isHomePage = true;
386
- //首页需要自己激活预加载;
387
- //timeout因为子页面loaded之后才append的,防止子页面尚未append、从而导致其preload未触发的问题;
388
- setTimeout(function() {
389
- triggerPreload(plus.webview.currentWebview());
390
- }, 300);
391
- }
392
- //设置ios顶部状态栏颜色;
393
- if ($.os.ios && $.options.statusBarBackground) {
394
- plus.navigator.setStatusBarBackground($.options.statusBarBackground);
395
- }
396
- if ($.os.android && parseFloat($.os.version) < 4.4) {
397
- //解决Android平台4.4版本以下,resume后,父窗体标题延迟渲染的问题;
398
- if (plus.webview.currentWebview().parent() == null) {
399
- document.addEventListener("resume", function() {
400
- var body = document.body;
401
- body.style.display = 'none';
402
- setTimeout(function() {
403
- body.style.display = '';
404
- }, 10);
405
- });
406
- }
407
- }
408
- });
409
- } else {
410
- if (subpages.length > 0) {
411
- var err = document.createElement('div');
412
- err.className = 'mui-error';
413
- //文字描述
414
- var span = document.createElement('span');
415
- span.innerHTML = '在该浏览器下,不支持创建子页面,具体参考';
416
- err.appendChild(span);
417
- var a = document.createElement('a');
418
- a.innerHTML = '"mui框架适用场景"';
419
- a.href = 'http://ask.dcloud.net.cn/article/113';
420
- err.appendChild(a);
421
- document.body.appendChild(err);
422
- console.log('在该浏览器下,不支持创建子页面');
423
- }
424
-
425
- }
426
-
427
- }
428
- });
429
- window.addEventListener('preload', function() {
430
- //处理预加载部分
431
- var webviews = $.options.preloadPages || [];
432
- $.plusReady(function() {
433
- $.each(webviews, function(index, webview) {
434
- $.createWindow($.extend(webview, {
435
- preload: true
436
- }));
437
- });
438
-
439
- });
440
- });
441
- })(mui);
@@ -1,100 +0,0 @@
1
- /**
2
- * mui.init
3
- * @param {type} $
4
- * @returns {undefined}
5
- */
6
- (function($) {
7
- $.global = $.options = {
8
- gestureConfig: {
9
- tap: true,
10
- doubletap: false,
11
- longtap: false,
12
- hold: false,
13
- flick: true,
14
- swipe: true,
15
- drag: true
16
- }
17
- };
18
- /**
19
- *
20
- * @param {type} options
21
- * @returns {undefined}
22
- */
23
- $.initGlobal = function(options) {
24
- $.options = $.extend(true, $.global, options);
25
- return this;
26
- };
27
- var inits = {};
28
-
29
- var isInitialized = false;
30
- //TODO 自动调用init?因为用户自己调用init的时机可能不确定,如果晚于自动init,则会有潜在问题
31
- // $.ready(function() {
32
- // setTimeout(function() {
33
- // if (!isInitialized) {
34
- // $.init();
35
- // }
36
- // }, 300);
37
- // });
38
- /**
39
- * 单页配置 初始化
40
- * @param {object} options
41
- */
42
- $.init = function(options) {
43
- isInitialized = true;
44
- $.options = $.extend(true, $.global, options || {});
45
- $.ready(function() {
46
- $.each($.inits, function(index, init) {
47
- var isInit = !!(!inits[init.name] || init.repeat);
48
- if (isInit) {
49
- init.handle.call($);
50
- inits[init.name] = true;
51
- }
52
- });
53
- });
54
- return this;
55
- };
56
-
57
- /**
58
- * 增加初始化执行流程
59
- * @param {function} init
60
- */
61
- $.registerInit = function(init) {
62
- return $.registerHandler('inits', init);
63
- };
64
- $(function() {
65
- var classList = document.body.classList;
66
- var os = [];
67
- if ($.os.ios) {
68
- os.push({
69
- os: 'ios',
70
- version: $.os.version
71
- });
72
- classList.add($.className('ios'));
73
- } else if ($.os.android) {
74
- os.push({
75
- os: 'android',
76
- version: $.os.version
77
- });
78
- classList.add($.className('android'));
79
- }
80
- if ($.os.wechat) {
81
- os.push({
82
- os: 'wechat',
83
- version: $.os.wechat.version
84
- });
85
- classList.add($.className('wechat'));
86
- }
87
- if (os.length) {
88
- $.each(os, function(index, osObj) {
89
- var version = '';
90
- var classArray = [];
91
- if (osObj.version) {
92
- $.each(osObj.version.split('.'), function(i, v) {
93
- version = version + (version ? '-' : '') + v;
94
- classList.add($.className(osObj.os + '-' + version));
95
- });
96
- }
97
- });
98
- }
99
- });
100
- })(mui);
@@ -1,57 +0,0 @@
1
- /**
2
- * mui.init pulldownRefresh
3
- * @param {type} $
4
- * @returns {undefined}
5
- */
6
- (function($) {
7
- $.registerInit({
8
- name: 'pullrefresh',
9
- index: 1000,
10
- handle: function() {
11
- var options = $.options;
12
- var pullRefreshOptions = options.pullRefresh || {};
13
- var hasPulldown = pullRefreshOptions.down && pullRefreshOptions.down.hasOwnProperty('callback');
14
- var hasPullup = pullRefreshOptions.up && pullRefreshOptions.up.hasOwnProperty('callback');
15
- if (hasPulldown || hasPullup) {
16
- var container = pullRefreshOptions.container;
17
- if (container) {
18
- var $container = $(container);
19
- if ($container.length === 1) {
20
- if ($.os.plus && $.os.android) { //android 5+
21
- $.plusReady(function() {
22
- var webview = plus.webview.currentWebview();
23
- if (hasPullup) {
24
- //当前页面初始化pullup
25
- var upOptions = {};
26
- upOptions.up = pullRefreshOptions.up;
27
- upOptions.webviewId = webview.id || webview.getURL();
28
- $container.pullRefresh(upOptions);
29
- }
30
- if (hasPulldown) {
31
- var parent = webview.parent();
32
- var id = webview.id || webview.getURL();
33
- if (parent) {
34
- if (!hasPullup) { //如果没有上拉加载,需要手动初始化一个默认的pullRefresh,以便当前页面容器可以调用endPulldownToRefresh等方法
35
- $container.pullRefresh({
36
- webviewId: id
37
- });
38
- }
39
- var downOptions = {
40
- webviewId: id
41
- };
42
- downOptions.down = $.extend({}, pullRefreshOptions.down);
43
- downOptions.down.callback = '_CALLBACK';
44
- //父页面初始化pulldown
45
- parent.evalJS("mui&&mui(document.querySelector('.mui-content')).pullRefresh('" + JSON.stringify(downOptions) + "')");
46
- }
47
- }
48
- });
49
- } else {
50
- $container.pullRefresh(pullRefreshOptions);
51
- }
52
- }
53
- }
54
- }
55
- }
56
- });
57
- })(mui);
@@ -1,108 +0,0 @@
1
- /**
2
- * MUI JSONP
3
- * varstion 1.0.0
4
- * by Houfeng
5
- * Houfeng@DCloud.io
6
- */
7
-
8
- (function($, win, doc) {
9
-
10
- var callbackIndex = 0;
11
-
12
- //生成回调函数名
13
- var createCallbackName = function() {
14
- return 'mui_jsonp_callback_' + (callbackIndex++);
15
- };
16
-
17
- var container = doc.body;
18
-
19
- //导入 script 元素
20
- var importScript = function(url) {
21
- var element = doc.createElement('script');
22
- element.src = url;
23
- element.async = true;
24
- element.defer = true;
25
- container.appendChild(element);
26
- return element;
27
- };
28
-
29
- //转换 URL,JSONP 只支持 get 方式的 queryString ,需将 data 拼入 url
30
- var convertUrl = function(url, data, jsonpParam, callbacnName) {
31
- if (jsonpParam) {
32
- url = url.replace(jsonpParam + '=?', jsonpParam + '=' + callbacnName);
33
- } else {
34
- data['callback'] = callbacnName;
35
- }
36
- var buffer = [];
37
- for (var key in data) {
38
- buffer.push(key + '=' + encodeURIComponent(data[key]));
39
- }
40
- return url + (url.indexOf('?') > -1 ? '&' : '?') + buffer.join('&');
41
- };
42
-
43
- //获取 QueryString
44
- var getQueryString = function(url) {
45
- url = url || location.search;
46
- var splitIndex = url.indexOf('?');
47
- var queryString = url.substr(splitIndex + 1);
48
- var paramArray = queryString.split('&');
49
- var result = {};
50
- for (var i in paramArray) {
51
- var params = paramArray[i].split('=');
52
- result[params[0]] = params[1];
53
- }
54
- return result;
55
- }
56
-
57
- //获取将传递给服务器的回调函数的请求参数名
58
- var getJSONPParam = function(url) {
59
- var query = getQueryString(url);
60
- for (var name in query) {
61
- if (query[name] === '?') {
62
- return name;
63
- }
64
- }
65
- return null;
66
- };
67
-
68
- /**
69
- * @description JSONP 方法
70
- * @param {String} url 将请求的地址
71
- * @param {Object} data 请求参数数据
72
- * @param {Function} callback 请求完成时回调函数
73
- * @return {mui} mui 对象自身
74
- **/
75
- $.getJSONP = function(url, data, callback) {
76
- if (!url) {
77
- throw "mui.getJSONP URL error!";
78
- }
79
- var jsonpParam = getJSONPParam(url);
80
- var callbackName = createCallbackName();
81
- data = data || {};
82
- callback = callback || $.noop;
83
- url = convertUrl(url, data, jsonpParam, callbackName);
84
- var scriptElement = null;
85
- win[callbackName] = function(result) {
86
- callback(result);
87
- if (scriptElement) {
88
- container.removeChild(scriptElement);
89
- }
90
- win[callbackName] = null;
91
- delete win[callbackName];
92
- };
93
- scriptElement = importScript(url);
94
- return $;
95
- };
96
-
97
- //为原 mui.getJSON 方法添加同 jQuery.getJSON 一样的 JSONP 支持
98
- $.__getJSON = $.getJSON;
99
- $.getJSON = function(url, data, callback) {
100
- var isJSONP = getJSONPParam(url) != null;
101
- if (isJSONP) {
102
- return $.getJSONP(url, data, callback);
103
- } else {
104
- return $.__getJSON(url, data, callback);
105
- }
106
- };
107
-
108
- }(mui, window, document));