mui_app_rails 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/mui_app_rails/mui.js +6013 -1
- data/app/assets/javascripts/mui_app_rails/mui.min.js +8 -0
- data/app/assets/javascripts/mui_app_rails.js +1 -1
- data/app/assets/stylesheets/mui_app_rails/mui.css +3742 -0
- data/app/assets/stylesheets/mui_app_rails/mui.min.css +5 -0
- data/lib/mui_app_rails/engine.rb +12 -0
- data/lib/mui_app_rails/version.rb +1 -1
- data/lib/mui_app_rails.rb +1 -1
- metadata +17 -99
- data/app/assets/javascripts/mui_app_rails/actions.js +0 -26
- data/app/assets/javascripts/mui_app_rails/ajax.plugin.js +0 -3
- data/app/assets/javascripts/mui_app_rails/input.plugin.js +0 -232
- data/app/assets/javascripts/mui_app_rails/modals.js +0 -37
- data/app/assets/javascripts/mui_app_rails/mui.active.js +0 -30
- data/app/assets/javascripts/mui_app_rails/mui.ajax.5+.js +0 -27
- data/app/assets/javascripts/mui_app_rails/mui.ajax.js +0 -277
- data/app/assets/javascripts/mui_app_rails/mui.animation.js +0 -39
- data/app/assets/javascripts/mui_app_rails/mui.animationframe.js +0 -72
- data/app/assets/javascripts/mui_app_rails/mui.back.5+.js +0 -108
- data/app/assets/javascripts/mui_app_rails/mui.back.js +0 -56
- data/app/assets/javascripts/mui_app_rails/mui.class.js +0 -40
- data/app/assets/javascripts/mui_app_rails/mui.class.scroll.js +0 -894
- data/app/assets/javascripts/mui_app_rails/mui.class.scroll.pullrefresh.js +0 -150
- data/app/assets/javascripts/mui_app_rails/mui.class.scroll.slider.js +0 -361
- data/app/assets/javascripts/mui_app_rails/mui.class.scroll.slider.old.js +0 -332
- data/app/assets/javascripts/mui_app_rails/mui.detect.5+.js +0 -18
- data/app/assets/javascripts/mui_app_rails/mui.detect.js +0 -50
- data/app/assets/javascripts/mui_app_rails/mui.dialog.alert.js +0 -27
- data/app/assets/javascripts/mui_app_rails/mui.dialog.confirm.js +0 -27
- data/app/assets/javascripts/mui_app_rails/mui.dialog.prompt.js +0 -33
- data/app/assets/javascripts/mui_app_rails/mui.dialog.toast.js +0 -20
- data/app/assets/javascripts/mui_app_rails/mui.event.js +0 -160
- data/app/assets/javascripts/mui_app_rails/mui.fixed.animation.js +0 -22
- data/app/assets/javascripts/mui_app_rails/mui.fixed.classlist.js +0 -50
- data/app/assets/javascripts/mui_app_rails/mui.fixed.fastclick.js +0 -64
- data/app/assets/javascripts/mui_app_rails/mui.fixed.js +0 -40
- data/app/assets/javascripts/mui_app_rails/mui.fixed.keyboard.js +0 -56
- data/app/assets/javascripts/mui_app_rails/mui.gestures.drag.js +0 -48
- data/app/assets/javascripts/mui_app_rails/mui.gestures.flick.js +0 -30
- data/app/assets/javascripts/mui_app_rails/mui.gestures.hold.js +0 -41
- data/app/assets/javascripts/mui_app_rails/mui.gestures.js +0 -207
- data/app/assets/javascripts/mui_app_rails/mui.gestures.longtap.js +0 -43
- data/app/assets/javascripts/mui_app_rails/mui.gestures.swipe.js +0 -29
- data/app/assets/javascripts/mui_app_rails/mui.gestures.tap.js +0 -40
- data/app/assets/javascripts/mui_app_rails/mui.init.5+.js +0 -441
- data/app/assets/javascripts/mui_app_rails/mui.init.js +0 -100
- data/app/assets/javascripts/mui_app_rails/mui.init.pullrefresh.js +0 -57
- data/app/assets/javascripts/mui_app_rails/mui.jsonp.js +0 -108
- data/app/assets/javascripts/mui_app_rails/mui.layout.js +0 -22
- data/app/assets/javascripts/mui_app_rails/mui.namespace.js +0 -35
- data/app/assets/javascripts/mui_app_rails/mui.number.js +0 -93
- data/app/assets/javascripts/mui_app_rails/mui.offcanvas.js +0 -497
- data/app/assets/javascripts/mui_app_rails/mui.pullrefresh.js +0 -157
- data/app/assets/javascripts/mui_app_rails/mui.target.js +0 -58
- data/app/assets/javascripts/mui_app_rails/mui.view.js +0 -172
- data/app/assets/javascripts/mui_app_rails/popovers.js +0 -278
- data/app/assets/javascripts/mui_app_rails/pullrefresh.5+.js +0 -238
- data/app/assets/javascripts/mui_app_rails/push.js +0 -479
- data/app/assets/javascripts/mui_app_rails/segmented-controllers.js +0 -99
- data/app/assets/javascripts/mui_app_rails/sliders.js +0 -362
- data/app/assets/javascripts/mui_app_rails/switches.js +0 -165
- data/app/assets/javascripts/mui_app_rails/tableviews.js +0 -512
- data/app/assets/stylesheets/mui_app_rails/badges.scss +0 -88
- data/app/assets/stylesheets/mui_app_rails/bars.scss +0 -312
- data/app/assets/stylesheets/mui_app_rails/base.scss +0 -196
- data/app/assets/stylesheets/mui_app_rails/buttons.scss +0 -205
- data/app/assets/stylesheets/mui_app_rails/cards.scss +0 -62
- data/app/assets/stylesheets/mui_app_rails/forms.scss +0 -452
- data/app/assets/stylesheets/mui_app_rails/fullscreen.scss +0 -35
- data/app/assets/stylesheets/mui_app_rails/grid.scss +0 -75
- data/app/assets/stylesheets/mui_app_rails/hack.scss +0 -14
- data/app/assets/stylesheets/mui_app_rails/icon.scss +0 -170
- data/app/assets/stylesheets/mui_app_rails/iscroll.scss +0 -43
- data/app/assets/stylesheets/mui_app_rails/loadings.scss +0 -111
- data/app/assets/stylesheets/mui_app_rails/mixins.scss +0 -212
- data/app/assets/stylesheets/mui_app_rails/modals.scss +0 -34
- data/app/assets/stylesheets/mui_app_rails/mui.scss +0 -46
- data/app/assets/stylesheets/mui_app_rails/normalize.scss +0 -425
- data/app/assets/stylesheets/mui_app_rails/number.scss +0 -70
- data/app/assets/stylesheets/mui_app_rails/off-canvas.scss +0 -84
- data/app/assets/stylesheets/mui_app_rails/os.scss +0 -12
- data/app/assets/stylesheets/mui_app_rails/pagination.scss +0 -155
- data/app/assets/stylesheets/mui_app_rails/popovers.scss +0 -198
- data/app/assets/stylesheets/mui_app_rails/pullrefreshs.scss +0 -98
- data/app/assets/stylesheets/mui_app_rails/push.scss +0 -63
- data/app/assets/stylesheets/mui_app_rails/scroll.scss +0 -95
- data/app/assets/stylesheets/mui_app_rails/segmented-controls.scss +0 -150
- data/app/assets/stylesheets/mui_app_rails/slider-cell.scss +0 -20
- data/app/assets/stylesheets/mui_app_rails/sliders.scss +0 -133
- data/app/assets/stylesheets/mui_app_rails/switches.scss +0 -115
- data/app/assets/stylesheets/mui_app_rails/table-views.scss +0 -482
- data/app/assets/stylesheets/mui_app_rails/toast.scss +0 -16
- data/app/assets/stylesheets/mui_app_rails/type.scss +0 -23
- 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));
|