common.js
2.67 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
import wx from "weixin-js-sdk";
const invokeMethod = (obj) => {
if (window.yohoInterface) {
window.yohoInterface.triggerEvent(obj.success || function () {
}, obj.fail || function () {
}, {
method: obj.method,
arguments: obj.args
});
} else {
obj.fail && obj.fail();
}
}
const linkToMiniApp = (goUrl, type) => {
let url = goUrl || '';
if (url && url.indexOf('http') < 0 && type === 'other') {
url = document.location.protocol + '//' + document.location.host + url;
}
if (url) {
let scene;
if (type === 'product' || type === 'brand') {
scene = url;
} else {
let base_url = decodeURIComponent(url).split('?')[0];
let params = getQueryObj(url);
let paramStr = '';
Object.keys(params).forEach(key => {
paramStr += paramStr === '' ? '?' + key + '=' + params[key] : '&' + key + '=' + params[key];
})
scene = '/pages/webview/webview?url=' + base_url + encodeURIComponent(paramStr);
}
wx.miniProgram.navigateTo({url: scene});
return false;
} else {
return true;
}
};
const getQueryObj = (link) => {
let loc = decodeURIComponent(document.location.href);
if (link) {
loc = decodeURIComponent(link);
}
let variables = '';
let variableArr = [];
let finalArr = [];
if (loc.indexOf('?') > 0) {
variables = loc.split('?')[1];
}
if (variables.length > 0) {
variableArr = variables.split('#')[0].split('&');
}
for (let i = 0; i < variableArr.length; i++) {
let obj = {};
obj.name = variableArr[i].split('=')[0];
obj.value = variableArr[i].split('=')[1];
if (variableArr[i].split('=').length > 2) {
for (let j = 2; j < variableArr[i].split('=').length; j++) {
obj.value += '=' + variableArr[i].split('=')[j];
}
}
finalArr.push(obj);
}
let query_obj = {};
for (let i = 0; i < finalArr.length; i++) {
query_obj[finalArr[i].name] = finalArr[i].value;
}
return query_obj;
};
const createLinkButton = (url, id) => {
let a = document.createElement('a');
a.style.position = 'fixed';
a.style.top = 0;
a.style.left = 0;
a.style.border = 'none';
a.style.outline = 'none';
a.style.resize = 'none';
a.style.background = 'transparent';
a.style.color = 'transparent';
a.setAttribute('id', id);
a.setAttribute('href', url);
document.body.appendChild(a);
return a;
}
export {
invokeMethod,
getQueryObj,
linkToMiniApp,
createLinkButton
};