common.js
6.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
(function(owner) {
var OWNER_TITLE_NVIEW = {
titleText: "标题栏", // 标题栏文字,当不设置此属性时,默认加载当前页面的标题,并自动更新页面的标题
titleColor: "#fff", // 字体颜色,颜色值格式为"#RRGGBB",默认值为"#000000"
titleSize: "17px", // 字体大小,默认17px
backgroundColor: "#f2a11c", // 控件背景颜色,颜色值格式为"#RRGGBB",默认值为"#F7F7F7"
progress: { // 标题栏控件的进度条样式
color: "#f2a11c", // 进度条颜色,默认值为"#00FF00"
height: "2px" // 进度条高度,默认值为"2px"
},
splitLine: { // 标题栏控件的底部分割线,类似borderBottom
color: "#CCCCCC", // 分割线颜色,默认值为"#CCCCCC"
height: "1px" // 分割线高度,默认值为"2px"
},
autoBackButton: true,
}
//打开常规窗口
owner.openwin = function (id, argu, titleNView) {
var nview = Object.assign({}, OWNER_TITLE_NVIEW, titleNView)
if(titleNView){
if(titleNView.isScan){
nview.buttons = [{
"float": "right",
"text": "扫一扫",
"fontSize": "10px",
"onclick": clicked
}]
}
mui.openWindow({
url: id + '.html',
id: id,
show: {
aniShow: 'none'
},
styles: {
titleNView: nview
},
createNew: false,
waiting: {
autoShow: true
},
extras: ( argu && typeof argu === 'object' ) ? argu : JSON.parse(argu)
});
}else{
mui.openWindow({
url: id + '.html',
id: id,
show: {
aniShow: 'none'
},
createNew: false,
waiting: {
autoShow: true
},
extras: ( argu && typeof argu === 'object' ) ? argu : JSON.parse(argu)
});
}
}
function getParents(id) {
try {
var self = plus.webview.currentWebview();
var obj = self.opener();
var ret = [];
while (obj) {
if (obj.id == id) {
return ret;
} else {
ret.push(obj.id);
obj = obj.opener();
}
}
} catch (e) { }
return [];
}
//到某个窗口
owner.gotowin = function (id, argu, titleNView) {
var obj = plus.webview.getWebviewById(id)
if (obj) {
var arr = getParents(id);
if (arr.length > 0) {
owner.openwin(id, argu, titleNView);
var self = plus.webview.currentWebview();
setTimeout(function(){
for (var i = 0; i < arr.length; i++) {
plus.webview.getWebviewById(arr[i]).close(arr[i]);
}
self.close();
},600);
} else {
owner.openwin(id, argu, titleNView);
}
} else {
owner.openwin(id, argu, titleNView);
}
}
//获取网络模式
owner.getNetwork = function() {
var networkTypes = {};
networkTypes[plus.networkinfo.CONNECTION_UNKNOW] = "未知";
networkTypes[plus.networkinfo.CONNECTION_NONE] = "未连接网络";
networkTypes[plus.networkinfo.CONNECTION_ETHERNET] = "有线网络";
networkTypes[plus.networkinfo.CONNECTION_WIFI] = "wifi网络";
networkTypes[plus.networkinfo.CONNECTION_CELL2G] = "2G蜂窝网络";
networkTypes[plus.networkinfo.CONNECTION_CELL3G] = "3G蜂窝网络";
networkTypes[plus.networkinfo.CONNECTION_CELL4G] = "4G蜂窝网络";
return networkTypes[plus.networkinfo.getCurrentType()];
}
//禁止输入非数字字符
owner.banString = function(that) {
var str = that.value;
var str1 = str.substr(str.length - 1, str.length);
if(isNaN(str1)) {
that.value = str.slice(0, str.length - 1)
}
}
//禁止输入字符
owner.banother = function(that) {
var str = that.value;
var str1 = str.substr(str.length - 1, str.length)
if(!/^([a-zA-Z0-9]{1,18})$/.test(str1)) {
that.value = str.slice(0, str.length - 1)
}
}
//禁止输入数字字符以及其他无用的字符
owner.banNum = function(that) {
var str = that.value;
var str1 = str.substr(str.length - 1, str.length)
if(!isNaN(str1) || !/^([a-zA-Z\u4e00-\u9fa5\ ]{1,10})$/.test(str1)) {
that.value = str.slice(0, str.length - 1)
}
}
//禁止输入数字字符以及其他无用的字符
owner.cn = function(that) {
var str = that.value;
var str1 = str.substr(str.length - 1, str.length)
if(!/^([a-z\u4e00-\u9fa5\ ]{1,10})$/.test(str1)) {
that.value = str.slice(0, str.length - 1)
}
}
// 压缩图片
owner.compressImage = function(path, fn, obj) {
try {
var img = new Image();
img.src = path; // 传过来的图片路径在这里用。
obj || (obj = {});
var needWid = obj.width || 200;
img.onload = function() {
var that = this;
//生成比例
var w = that.width,
h = that.height,
scale = w / h;
w = needWid || w; //480 你想压缩到多大,改这里
h = w / scale;
//生成canvas
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
canvas.setAttribute("width", w)
canvas.setAttribute("height", h)
ctx.drawImage(that, 0, 0, w, h);
console.log("进入压缩")
var base64 = canvas.toDataURL('images/jpeg', 1 || 0.8); //1最清晰,越低越模糊。有一点不清楚这里明明设置的是jpeg。弹出 base64 开头的一段 data:image/png;却是png。哎开心就好,开心就好
f1 = base64; // 把base64数据丢过去,上传要用。
var bitMap = new plus.nativeObj.Bitmap('picObj');
bitMap.loadBase64Data(f1, function() {
bitMap.save(path, {},
function(i) {
console.log('保存图片成功:' + JSON.stringify(i));
try {
fn();
} catch(e) {}
},
function(e) {
console.log('保存图片失败:' + JSON.stringify(e));
});
});
return base64;
}
} catch(ex) {}
}
//过滤表情
owner.filteremoji = function(ori) {
try {
var regStr = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/ig;
var ret = ori.replace(regStr, '');
var hasEmoji = (ori.length > ret.length);
ret = ret.replace(/(^\s*)|(\s*$)/g, "");
try {
if(hasEmoji) {
mui.toast("不支持输入表情");
}
} catch(ex) {}
return ret;
} catch(e) {}
return ori;
}
owner.debounce = function(fn, delay){
console.log(fn)
let timer = null;
return function() {
// 通过 ‘this’ 和 ‘arguments’ 获取函数的作用域和变量
let context = this;
let args = arguments;
clearTimeout(timer);
timer = setTimeout(function() {
fn.apply(context, args);
}, delay);
}
}
})(window.common = {})