xctc-utils 1.6.42 → 1.6.44
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.
- package/README.md +27 -12
- package/dist/iframe/index.d.ts +19 -16
- package/dist/iframe/index.js +106 -56
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,32 +29,47 @@ all:boolean 为true时删除调用方法的所有缓存,否则只删除当前
|
|
|
29
29
|
#### 父级页面方法调用
|
|
30
30
|
|
|
31
31
|
```
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
/**
|
|
33
|
+
* 微信H5页面专用函数
|
|
34
|
+
* @param id iframe id属性值
|
|
35
|
+
* @param url iframe url属性值
|
|
36
|
+
* @param keys 微信分享链接存储的键,默认是 urlParamsData
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
39
|
+
useUtils.iframe.initParentDataToIframe(id:string,url:string,keys?:string)
|
|
35
40
|
```
|
|
36
|
-
#####
|
|
41
|
+
##### 父级页面获取到子页面发送的数据
|
|
37
42
|
```
|
|
38
43
|
cb回调函数,返回子页面传递的数据
|
|
39
|
-
useUtils.iframe.
|
|
44
|
+
useUtils.iframe.updateIframeToParentData( cb:any )
|
|
40
45
|
```
|
|
41
46
|
##### 父页面发送数据到 子页面
|
|
42
47
|
```
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
/**
|
|
49
|
+
* 主应用 发送数据到 子应用Iframe
|
|
50
|
+
* @param id iframe元素的id属性值
|
|
51
|
+
* @param data 主应用 发送到子应用的数据
|
|
52
|
+
* @param url 子应用的访问地址,如果没有调用 initParentDataToIframe 函数,则需要传入该参数
|
|
53
|
+
* @param duration 父页面向子页面传输数据时,如果和initParentDataToIframe函数同时调用,则需要加入定时器传递参数,子页面才能获取到数据
|
|
54
|
+
* @returns
|
|
55
|
+
*/
|
|
56
|
+
useUtils.iframe.parentSendIframeData( id:string,data:any,url?:string,duration?:number )
|
|
46
57
|
```
|
|
47
58
|
#### 子页面方法调用
|
|
48
59
|
##### 子页面获取到 主页面 传递的数据
|
|
49
60
|
```
|
|
50
61
|
cb回调函数,返回父页面传递的数据
|
|
51
|
-
useUtils.iframe.
|
|
62
|
+
useUtils.iframe.updateParentToIframeData(cb)
|
|
52
63
|
```
|
|
53
64
|
##### 子页面 发送数据到 主页面
|
|
54
65
|
```
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
66
|
+
/**
|
|
67
|
+
* 子应用frame 发送数据 到主应用
|
|
68
|
+
* @param data 发送的数据
|
|
69
|
+
* @param url 父页面地址
|
|
70
|
+
* @returns
|
|
71
|
+
*/
|
|
72
|
+
useUtils.iframe.iframeSendToParentData(data:any,url:string)
|
|
58
73
|
```
|
|
59
74
|
|
|
60
75
|
### 地址栏参数处理
|
package/dist/iframe/index.d.ts
CHANGED
|
@@ -1,33 +1,36 @@
|
|
|
1
1
|
export declare const $iframe: (id: string) => any;
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* @param id
|
|
5
|
-
* @param
|
|
3
|
+
* 微信H5专用函数
|
|
4
|
+
* @param id iframe id属性值
|
|
5
|
+
* @param url iframe url属性值
|
|
6
|
+
* @param keys 微信分享链接存储的键,默认是 urlParamsData
|
|
6
7
|
* @returns
|
|
7
8
|
*/
|
|
8
|
-
export declare const initParentDataToIframe: (id: string, keys?: string) => void;
|
|
9
|
+
export declare const initParentDataToIframe: (id: string, url: string, keys?: string) => void;
|
|
10
|
+
/**
|
|
11
|
+
* 主应用 发送数据到 子应用Iframe
|
|
12
|
+
* @param id iframe元素的id属性值
|
|
13
|
+
* @param data 主应用 发送到子应用的数据
|
|
14
|
+
* @param url 子应用的访问地址,如果没有调用 initParentDataToIframe 函数,则需要传入该参数
|
|
15
|
+
* @param duration 父页面向子页面传输数据时,如果和initParentDataToIframe函数同时调用,则需要加入定时器传递参数,子页面才能获取到数据
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
export declare const parentSendIframeData: (id: string, data: any, url?: string, duration?: number) => void;
|
|
9
19
|
/**
|
|
10
20
|
* 主应用 获取到 子应用Iframe传递的数据
|
|
11
21
|
* @param cb
|
|
12
22
|
*/
|
|
13
|
-
export declare const
|
|
23
|
+
export declare const updateIframeToParentData: (cb: any) => void;
|
|
14
24
|
/**
|
|
15
25
|
* 子应用 获取到 主应用 传递的数据
|
|
16
26
|
* @param cb
|
|
17
27
|
*/
|
|
18
|
-
export declare const
|
|
28
|
+
export declare const updateParentToIframeData: (cb: any) => void;
|
|
19
29
|
/**
|
|
20
30
|
* 子应用frame 发送数据 到主应用
|
|
21
|
-
* @param
|
|
22
|
-
* @param url
|
|
31
|
+
* @param data 发送的数据
|
|
32
|
+
* @param url 父页面地址
|
|
23
33
|
* @returns
|
|
24
34
|
*/
|
|
25
|
-
export declare const
|
|
35
|
+
export declare const iframeSendToParentData: (data: any, url: string) => void;
|
|
26
36
|
export declare const updateWeiXinShareReady: () => void;
|
|
27
|
-
/**
|
|
28
|
-
* 主应用 发送数据到 子应用Iframe
|
|
29
|
-
* @param id
|
|
30
|
-
* @param data
|
|
31
|
-
* @param url
|
|
32
|
-
*/
|
|
33
|
-
export declare const sendParentMessage: (id: string, data: any) => void;
|
package/dist/iframe/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.updateWeiXinShareReady = exports.iframeSendToParentData = exports.updateParentToIframeData = exports.updateIframeToParentData = exports.parentSendIframeData = exports.initParentDataToIframe = exports.$iframe = void 0;
|
|
4
4
|
var is_1 = require("../is");
|
|
5
5
|
var weixin_1 = require("../weixin");
|
|
6
6
|
var utils_1 = require("../utils");
|
|
@@ -28,39 +28,119 @@ var $iframe = function (id) {
|
|
|
28
28
|
exports.$iframe = $iframe;
|
|
29
29
|
// 主应用内初始化iframe子应用,并传递对应的参数到子应用
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
32
|
-
* @param id
|
|
33
|
-
* @param
|
|
31
|
+
* 微信H5专用函数
|
|
32
|
+
* @param id iframe id属性值
|
|
33
|
+
* @param url iframe url属性值
|
|
34
|
+
* @param keys 微信分享链接存储的键,默认是 urlParamsData
|
|
34
35
|
* @returns
|
|
35
36
|
*/
|
|
36
|
-
var initParentDataToIframe = function (id, keys) {
|
|
37
|
+
var initParentDataToIframe = function (id, url, keys) {
|
|
37
38
|
var _a;
|
|
38
39
|
if (!id) {
|
|
39
40
|
console.error("请传入 iframe id属性值!");
|
|
40
41
|
return;
|
|
41
42
|
}
|
|
43
|
+
if (!url) {
|
|
44
|
+
console.error("请传入 iframe url属性值!");
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
42
47
|
if (!keys) {
|
|
43
48
|
keys = "urlParamsData";
|
|
44
49
|
}
|
|
45
|
-
var iframe = (0, exports.$iframe)(id);
|
|
46
50
|
var stateData = (0, storage_1.getSessionStorage)(keys) || {};
|
|
47
51
|
var data = {};
|
|
48
52
|
if ((_a = stateData === null || stateData === void 0 ? void 0 : stateData.state) === null || _a === void 0 ? void 0 : _a.data) {
|
|
49
53
|
data = stateData.state.data || {};
|
|
50
54
|
}
|
|
51
|
-
|
|
52
|
-
iframe.addEventListener('load', function () {
|
|
53
|
-
// iFrame加载完成后的操作
|
|
54
|
-
iframe.contentWindow.postMessage(data, iframe.src);
|
|
55
|
-
});
|
|
55
|
+
onloadIframe(id, url, data);
|
|
56
56
|
};
|
|
57
57
|
exports.initParentDataToIframe = initParentDataToIframe;
|
|
58
|
+
function sendDataFormat(data, msg) {
|
|
59
|
+
var sendData = {
|
|
60
|
+
type: "data",
|
|
61
|
+
data: {},
|
|
62
|
+
msg: msg
|
|
63
|
+
};
|
|
64
|
+
if ((0, is_1.isObject)(data)) {
|
|
65
|
+
sendData.data = JSON.stringify(data);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
sendData.data = data;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function onloadIframe(id, url, data) {
|
|
72
|
+
if (!id) {
|
|
73
|
+
console.error("onloadIframe:请传入iframe元素的id属性值");
|
|
74
|
+
alert("请传入iframe元素的id属性值");
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (!url) {
|
|
78
|
+
console.error("请传入iframe元素的src属性值");
|
|
79
|
+
alert("onloadIframe:请传入iframe元素的src属性值");
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
var msg = "\u7236\u9875\u9762\u5411\u5B50\u9875\u9762".concat(url, "\u4F20\u9012\u53C2\u6570");
|
|
83
|
+
var sendData = sendDataFormat(data, msg);
|
|
84
|
+
var iframe = (0, exports.$iframe)(id);
|
|
85
|
+
iframe.src = url;
|
|
86
|
+
if (iframe.hasOwnProperty("attachEvent")) {
|
|
87
|
+
iframe.attachEvent('onload', function () {
|
|
88
|
+
setTimeout(function () {
|
|
89
|
+
iframe.contentWindow.postMessage(sendData, iframe.src);
|
|
90
|
+
}, 0);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
iframe.onload = function () {
|
|
95
|
+
setTimeout(function () {
|
|
96
|
+
iframe.contentWindow.postMessage(sendData, iframe.src);
|
|
97
|
+
}, 0);
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* 主应用 发送数据到 子应用Iframe
|
|
103
|
+
* @param id iframe元素的id属性值
|
|
104
|
+
* @param data 主应用 发送到子应用的数据
|
|
105
|
+
* @param url 子应用的访问地址,如果没有调用 initParentDataToIframe 函数,则需要传入该参数
|
|
106
|
+
* @param duration 父页面向子页面传输数据时,如果和initParentDataToIframe函数同时调用,则需要加入定时器传递参数,子页面才能获取到数据
|
|
107
|
+
* @returns
|
|
108
|
+
*/
|
|
109
|
+
var parentSendIframeData = function (id, data, url, duration) {
|
|
110
|
+
if (!id) {
|
|
111
|
+
console.error("请传入iframe元素的id属性值");
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (!data) {
|
|
115
|
+
console.error("请传入需要发送到子页面数据");
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (!duration)
|
|
119
|
+
duration = 200;
|
|
120
|
+
var iframe = (0, exports.$iframe)(id);
|
|
121
|
+
if (!iframe['src']) {
|
|
122
|
+
if (!url) {
|
|
123
|
+
console.error("请传入iframe src属性值");
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
onloadIframe(id, url, data);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
var msg = "\u7236\u9875\u9762\u5411\u5B50\u9875\u9762".concat(iframe.src, "\u4F20\u9012\u53C2\u6570");
|
|
132
|
+
var sendData = sendDataFormat(data, msg);
|
|
133
|
+
setTimeout(function () {
|
|
134
|
+
iframe.contentWindow.postMessage(sendData, iframe.src);
|
|
135
|
+
}, duration);
|
|
136
|
+
};
|
|
137
|
+
exports.parentSendIframeData = parentSendIframeData;
|
|
58
138
|
/**
|
|
59
139
|
* 主应用 获取到 子应用Iframe传递的数据
|
|
60
140
|
* @param cb
|
|
61
141
|
*/
|
|
62
|
-
var
|
|
63
|
-
|
|
142
|
+
var updateIframeToParentData = function (cb) {
|
|
143
|
+
window.addEventListener('message', function (event) {
|
|
64
144
|
var data = (event === null || event === void 0 ? void 0 : event.data) || {};
|
|
65
145
|
var messageData = (0, utils_1.isJson)(data) || "";
|
|
66
146
|
if (typeof cb === "function" && (messageData === null || messageData === void 0 ? void 0 : messageData.type) == "data") {
|
|
@@ -68,42 +148,39 @@ var updateIframeReceiveData = function (cb) {
|
|
|
68
148
|
}
|
|
69
149
|
});
|
|
70
150
|
};
|
|
71
|
-
exports.
|
|
151
|
+
exports.updateIframeToParentData = updateIframeToParentData;
|
|
72
152
|
/**
|
|
73
153
|
* 子应用 获取到 主应用 传递的数据
|
|
74
154
|
* @param cb
|
|
75
155
|
*/
|
|
76
|
-
var
|
|
77
|
-
|
|
156
|
+
var updateParentToIframeData = function (cb) {
|
|
157
|
+
window.addEventListener('message', function (event) {
|
|
78
158
|
var data = event.data;
|
|
79
159
|
var mainData = (0, utils_1.isJson)(data);
|
|
80
|
-
if (typeof cb === "function"
|
|
160
|
+
if (typeof cb === "function") {
|
|
81
161
|
cb(mainData);
|
|
82
162
|
}
|
|
83
163
|
}, false);
|
|
84
164
|
};
|
|
85
|
-
exports.
|
|
165
|
+
exports.updateParentToIframeData = updateParentToIframeData;
|
|
86
166
|
/**
|
|
87
167
|
* 子应用frame 发送数据 到主应用
|
|
88
|
-
* @param
|
|
89
|
-
* @param url
|
|
168
|
+
* @param data 发送的数据
|
|
169
|
+
* @param url 父页面地址
|
|
90
170
|
* @returns
|
|
91
171
|
*/
|
|
92
|
-
var
|
|
172
|
+
var iframeSendToParentData = function (data, url) {
|
|
93
173
|
if (!url) {
|
|
94
174
|
console.error("必须传入父页面的地址!");
|
|
95
175
|
return;
|
|
96
176
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
else {
|
|
101
|
-
console.error("返回父页面的数据必须是对象!");
|
|
102
|
-
}
|
|
177
|
+
var msg = "\u5B50\u9875\u9762\u5411\u7236\u9875\u9762".concat(url, "\u4F20\u9012\u53C2\u6570");
|
|
178
|
+
var sendData = sendDataFormat(data, msg);
|
|
179
|
+
window.parent.postMessage(sendData, url);
|
|
103
180
|
};
|
|
104
|
-
exports.
|
|
181
|
+
exports.iframeSendToParentData = iframeSendToParentData;
|
|
105
182
|
var updateWeiXinShareReady = function () {
|
|
106
|
-
|
|
183
|
+
window.addEventListener('message', function (event) {
|
|
107
184
|
var data = event.data;
|
|
108
185
|
var messageData = (0, utils_1.isJson)(data) || "";
|
|
109
186
|
if ((messageData === null || messageData === void 0 ? void 0 : messageData.type) == "share" && (messageData === null || messageData === void 0 ? void 0 : messageData.data)) {
|
|
@@ -112,30 +189,3 @@ var updateWeiXinShareReady = function () {
|
|
|
112
189
|
});
|
|
113
190
|
};
|
|
114
191
|
exports.updateWeiXinShareReady = updateWeiXinShareReady;
|
|
115
|
-
/**
|
|
116
|
-
* 主应用 发送数据到 子应用Iframe
|
|
117
|
-
* @param id
|
|
118
|
-
* @param data
|
|
119
|
-
* @param url
|
|
120
|
-
*/
|
|
121
|
-
var sendParentMessage = function (id, data) {
|
|
122
|
-
if (!id) {
|
|
123
|
-
console.error("请传入iframe元素的id属性值");
|
|
124
|
-
}
|
|
125
|
-
var iframe = (0, exports.$iframe)(id);
|
|
126
|
-
if (iframe) {
|
|
127
|
-
if ((0, is_1.isObject)(data)) {
|
|
128
|
-
iframe.addEventListener('load', function () {
|
|
129
|
-
// iFrame加载完成后的操作
|
|
130
|
-
iframe.contentWindow.postMessage(JSON.stringify(data), iframe.src);
|
|
131
|
-
}, false);
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
console.error("传递的数据仅支持对象格式!");
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
console.error("未查询到iframe标签,请检查id属性值是否正确!");
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
exports.sendParentMessage = sendParentMessage;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xctc-utils",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.44",
|
|
4
4
|
"description": "localStorage存储\r ```\r sessionStorage存储\r ```\r crypto-js加密、解密\r ```\r 微信授权登录、微信分享\r ```\r 设备环境获取\r ```\r 是否是微信浏览器\r ```\r 时间戳转时间,字符串转时间戳",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|