xctc-utils 1.6.41 → 1.6.43

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