@tarojs/taro-h5 3.5.11 → 3.6.0-alpha.0

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/dist/index.cjs.js CHANGED
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var Taro = require('@tarojs/api');
6
6
  var router = require('@tarojs/router');
7
+ var shared = require('@tarojs/shared');
7
8
  var utils = require('@tarojs/router/dist/utils');
8
9
  var runtime = require('@tarojs/runtime');
9
10
  var base64Js = require('base64-js');
@@ -37,30 +38,38 @@ var jsonpRetry__default = /*#__PURE__*/_interopDefaultLegacy(jsonpRetry);
37
38
 
38
39
  class MethodHandler {
39
40
  constructor({ name, success, fail, complete }) {
41
+ this.isHandlerError = false;
40
42
  this.methodName = name;
41
43
  this.__success = success;
42
44
  this.__fail = fail;
43
45
  this.__complete = complete;
46
+ this.isHandlerError = shared.isFunction(this.__complete) || shared.isFunction(this.__fail);
44
47
  }
45
- success(res = {}, resolve = Promise.resolve.bind(Promise)) {
48
+ success(res = {}, promise = {}) {
46
49
  if (!res.errMsg) {
47
50
  res.errMsg = `${this.methodName}:ok`;
48
51
  }
49
- typeof this.__success === 'function' && this.__success(res);
50
- typeof this.__complete === 'function' && this.__complete(res);
52
+ shared.isFunction(this.__success) && this.__success(res);
53
+ shared.isFunction(this.__complete) && this.__complete(res);
54
+ const { resolve = Promise.resolve.bind(Promise) } = promise;
51
55
  return resolve(res);
52
56
  }
53
- fail(res = {}, reject = Promise.reject.bind(Promise)) {
57
+ fail(res = {}, promise = {}) {
54
58
  if (!res.errMsg) {
55
59
  res.errMsg = `${this.methodName}:fail`;
56
60
  }
57
61
  else {
58
62
  res.errMsg = `${this.methodName}:fail ${res.errMsg}`;
59
63
  }
60
- console.error(res.errMsg);
61
- typeof this.__fail === 'function' && this.__fail(res);
62
- typeof this.__complete === 'function' && this.__complete(res);
63
- return reject(res);
64
+ if (process.env.NODE_ENV !== 'production') {
65
+ console.error(res.errMsg);
66
+ }
67
+ shared.isFunction(this.__fail) && this.__fail(res);
68
+ shared.isFunction(this.__complete) && this.__complete(res);
69
+ const { resolve = Promise.resolve.bind(Promise), reject = Promise.reject.bind(Promise) } = promise;
70
+ return this.isHandlerError
71
+ ? resolve(res)
72
+ : reject(res);
64
73
  }
65
74
  }
66
75
  class CallbackManager {
@@ -104,12 +113,12 @@ class CallbackManager {
104
113
  */
105
114
  this.trigger = (...args) => {
106
115
  this.callbacks.forEach(opt => {
107
- if (typeof opt === 'function') {
116
+ if (shared.isFunction(opt)) {
108
117
  opt(...args);
109
118
  }
110
119
  else {
111
120
  const { callback, ctx } = opt;
112
- typeof callback === 'function' && callback.call(ctx, ...args);
121
+ shared.isFunction(callback) && callback.call(ctx, ...args);
113
122
  }
114
123
  });
115
124
  };
@@ -161,16 +170,12 @@ function debounce(fn, ms = 250, scope) {
161
170
  };
162
171
  }
163
172
 
164
- function isFunction(obj) {
165
- return typeof obj === 'function';
166
- }
167
173
  const VALID_COLOR_REG = /^#[0-9a-fA-F]{6}$/;
168
174
  const isValidColor = (color) => {
169
175
  return VALID_COLOR_REG.test(color);
170
176
  };
171
177
 
172
178
  /* eslint-disable prefer-promise-reject-errors */
173
- const isProd = process.env.NODE_ENV === 'production';
174
179
  function shouldBeObject(target) {
175
180
  if (target && typeof target === 'object')
176
181
  return { flag: true };
@@ -252,7 +257,7 @@ function temporarilyNotSupport(name = '') {
252
257
  type: 'method',
253
258
  category: 'temporarily',
254
259
  });
255
- if (isProd) {
260
+ if (process.env.NODE_ENV === 'production') {
256
261
  console.warn(errMsg);
257
262
  return handle.success({ errMsg });
258
263
  }
@@ -272,7 +277,7 @@ function weixinCorpSupport(name) {
272
277
  type: 'method',
273
278
  category: 'weixin_corp',
274
279
  });
275
- if (isProd) {
280
+ if (process.env.NODE_ENV === 'production') {
276
281
  console.warn(errMsg);
277
282
  return handle.success({ errMsg });
278
283
  }
@@ -292,7 +297,7 @@ function permanentlyNotSupport(name = '') {
292
297
  type: 'method',
293
298
  category: 'permanently',
294
299
  });
295
- if (isProd) {
300
+ if (process.env.NODE_ENV === 'production') {
296
301
  console.warn(errMsg);
297
302
  return handle.success({ errMsg });
298
303
  }
@@ -308,7 +313,7 @@ function processOpenApi({ name, defaultOptions, standardMethod, formatOptions =
308
313
  // @ts-ignore
309
314
  const targetApi = (_a = window === null || window === void 0 ? void 0 : window.wx) === null || _a === void 0 ? void 0 : _a[name];
310
315
  const opts = formatOptions(Object.assign({}, defaultOptions, options));
311
- if (typeof targetApi === 'function') {
316
+ if (shared.isFunction(targetApi)) {
312
317
  return new Promise((resolve, reject) => {
313
318
  ['fail', 'success', 'complete'].forEach(k => {
314
319
  opts[k] = preRef => {
@@ -325,7 +330,7 @@ function processOpenApi({ name, defaultOptions, standardMethod, formatOptions =
325
330
  });
326
331
  });
327
332
  }
328
- else if (typeof standardMethod === 'function') {
333
+ else if (shared.isFunction(standardMethod)) {
329
334
  return standardMethod(opts);
330
335
  }
331
336
  else {
@@ -1512,7 +1517,7 @@ const setClipboardData = ({ data, success, fail, complete }) => __awaiter(void 0
1512
1517
  * iOS < 10 的系统可能无法使用编程方式访问剪贴板,参考:
1513
1518
  * https://stackoverflow.com/questions/34045777/copy-to-clipboard-using-javascript-in-ios/34046084
1514
1519
  */
1515
- if (typeof document.execCommand === 'function') {
1520
+ if (shared.isFunction(document.execCommand)) {
1516
1521
  const textarea = document.createElement('textarea');
1517
1522
  textarea.readOnly = true;
1518
1523
  textarea.value = data;
@@ -1972,9 +1977,9 @@ const getLocationByW3CApi = (options) => {
1972
1977
  /** 调用结果,自动补充 */
1973
1978
  errMsg: ''
1974
1979
  };
1975
- handle.success(result, resolve);
1980
+ handle.success(result, { resolve, reject });
1976
1981
  }, (error) => {
1977
- handle.fail({ errMsg: error.message }, reject);
1982
+ handle.fail({ errMsg: error.message }, { resolve, reject });
1978
1983
  }, positionOptions);
1979
1984
  });
1980
1985
  };
@@ -2072,7 +2077,7 @@ const chooseLocation = ({ success, fail, complete, mapOpts } = {}) => {
2072
2077
  console.warn('chooseLocation api 依赖腾讯地图定位api,需要在 defineConstants 中配置 LOCATION_APIKEY');
2073
2078
  return handle.fail({
2074
2079
  errMsg: 'LOCATION_APIKEY needed'
2075
- }, reject);
2080
+ }, { resolve, reject });
2076
2081
  }
2077
2082
  const onMessage = event => {
2078
2083
  // 接收位置信息,用户选择确认位置点后选点组件会触发该事件,回传用户的位置信息
@@ -2091,14 +2096,14 @@ const chooseLocation = ({ success, fail, complete, mapOpts } = {}) => {
2091
2096
  chooser.remove();
2092
2097
  }, 300);
2093
2098
  if (res) {
2094
- return handle.fail(res, reject);
2099
+ return handle.fail(res, { resolve, reject });
2095
2100
  }
2096
2101
  else {
2097
2102
  if (chooseLocation.latitude && chooseLocation.longitude) {
2098
- return handle.success(chooseLocation, resolve);
2103
+ return handle.success(chooseLocation, { resolve, reject });
2099
2104
  }
2100
2105
  else {
2101
- return handle.fail({}, reject);
2106
+ return handle.fail({}, { resolve, reject });
2102
2107
  }
2103
2108
  }
2104
2109
  }, key, mapOpts);
@@ -2355,12 +2360,12 @@ const getImageInfo = (options) => {
2355
2360
  width: image.naturalWidth,
2356
2361
  height: image.naturalHeight,
2357
2362
  path: getBase64Image(image) || src
2358
- }, resolve);
2363
+ }, { resolve, reject });
2359
2364
  };
2360
2365
  image.onerror = (e) => {
2361
2366
  handle.fail({
2362
2367
  errMsg: e.message
2363
- }, reject);
2368
+ }, { resolve, reject });
2364
2369
  };
2365
2370
  image.src = src;
2366
2371
  });
@@ -2387,7 +2392,7 @@ const previewImage = (options) => __awaiter(void 0, void 0, void 0, function* ()
2387
2392
  item.appendChild(div);
2388
2393
  // Note: 等待图片加载完后返回,会导致轮播被卡住
2389
2394
  resolve(item);
2390
- if (typeof loadFail === 'function') {
2395
+ if (shared.isFunction(loadFail)) {
2391
2396
  image.addEventListener('error', (err) => {
2392
2397
  loadFail({ errMsg: err.message });
2393
2398
  });
@@ -2492,7 +2497,7 @@ const chooseImage = function (options) {
2492
2497
  el.removeAttribute('capture');
2493
2498
  }
2494
2499
  }
2495
- return new Promise(resolve => {
2500
+ return new Promise((resolve, reject) => {
2496
2501
  const TaroMouseEvents = document.createEvent('MouseEvents');
2497
2502
  TaroMouseEvents.initEvent('click', true, true);
2498
2503
  if (el) {
@@ -2511,7 +2516,7 @@ const chooseImage = function (options) {
2511
2516
  (_a = res.tempFilePaths) === null || _a === void 0 ? void 0 : _a.push(url);
2512
2517
  (_b = res.tempFiles) === null || _b === void 0 ? void 0 : _b.push({ path: url, size: item.size, type: item.type, originalFileObj: item });
2513
2518
  });
2514
- handle.success(res, resolve);
2519
+ handle.success(res, { resolve, reject });
2515
2520
  target.value = '';
2516
2521
  }
2517
2522
  };
@@ -2579,7 +2584,7 @@ const chooseVideo = (options) => {
2579
2584
  inputEl.setAttribute('accept', 'video/*');
2580
2585
  inputEl.setAttribute('style', 'position: fixed; top: -4000px; left: -3000px; z-index: -300;');
2581
2586
  document.body.appendChild(inputEl);
2582
- return new Promise(resolve => {
2587
+ return new Promise((resolve, reject) => {
2583
2588
  const TaroMouseEvents = document.createEvent('MouseEvents');
2584
2589
  TaroMouseEvents.initEvent('click', true, true);
2585
2590
  inputEl.dispatchEvent(TaroMouseEvents);
@@ -2600,7 +2605,7 @@ const chooseVideo = (options) => {
2600
2605
  res.size = event.total;
2601
2606
  res.height = videoEl.videoHeight;
2602
2607
  res.width = videoEl.videoHeight;
2603
- return handle.success(res, resolve);
2608
+ return handle.success(res, { resolve, reject });
2604
2609
  };
2605
2610
  };
2606
2611
  if (file) {
@@ -2881,13 +2886,13 @@ function _request(options) {
2881
2886
  .then(data => {
2882
2887
  res.statusCode = 200;
2883
2888
  res.data = data;
2884
- typeof success === 'function' && success(res);
2885
- typeof complete === 'function' && complete(res);
2889
+ shared.isFunction(success) && success(res);
2890
+ shared.isFunction(complete) && complete(res);
2886
2891
  return res;
2887
2892
  })
2888
2893
  .catch(err => {
2889
- typeof fail === 'function' && fail(err);
2890
- typeof complete === 'function' && complete(res);
2894
+ shared.isFunction(fail) && fail(err);
2895
+ shared.isFunction(complete) && complete(res);
2891
2896
  return Promise.reject(err);
2892
2897
  });
2893
2898
  }
@@ -2955,13 +2960,13 @@ function _request(options) {
2955
2960
  })
2956
2961
  .then(data => {
2957
2962
  res.data = data;
2958
- typeof success === 'function' && success(res);
2959
- typeof complete === 'function' && complete(res);
2963
+ shared.isFunction(success) && success(res);
2964
+ shared.isFunction(complete) && complete(res);
2960
2965
  return res;
2961
2966
  })
2962
2967
  .catch(err => {
2963
- typeof fail === 'function' && fail(err);
2964
- typeof complete === 'function' && complete(res);
2968
+ shared.isFunction(fail) && fail(err);
2969
+ shared.isFunction(complete) && complete(res);
2965
2970
  err.statusCode = res.statusCode;
2966
2971
  err.errMsg = err.message;
2967
2972
  return Promise.reject(err);
@@ -3150,14 +3155,14 @@ class SocketTask {
3150
3155
  if (this.readyState !== 1) {
3151
3156
  const res = { errMsg: 'SocketTask.send:fail SocketTask.readState is not OPEN' };
3152
3157
  console.error(res.errMsg);
3153
- typeof fail === 'function' && fail(res);
3154
- typeof complete === 'function' && complete(res);
3158
+ shared.isFunction(fail) && fail(res);
3159
+ shared.isFunction(complete) && complete(res);
3155
3160
  return Promise.reject(res);
3156
3161
  }
3157
3162
  this.ws.send(data);
3158
3163
  const res = { errMsg: 'sendSocketMessage:ok' };
3159
- typeof success === 'function' && success(res);
3160
- typeof complete === 'function' && complete(res);
3164
+ shared.isFunction(success) && success(res);
3165
+ shared.isFunction(complete) && complete(res);
3161
3166
  return Promise.resolve(res);
3162
3167
  }
3163
3168
  close(opts = {}) {
@@ -3169,8 +3174,8 @@ class SocketTask {
3169
3174
  this._destroyWhenClose && this._destroyWhenClose();
3170
3175
  this.ws.close();
3171
3176
  const res = { errMsg: 'closeSocket:ok' };
3172
- typeof success === 'function' && success(res);
3173
- typeof complete === 'function' && complete(res);
3177
+ shared.isFunction(success) && success(res);
3178
+ shared.isFunction(complete) && complete(res);
3174
3179
  return Promise.resolve(res);
3175
3180
  }
3176
3181
  onOpen(func) {
@@ -3228,13 +3233,13 @@ function connectSocket(options) {
3228
3233
  correct: 'String',
3229
3234
  wrong: url
3230
3235
  })
3231
- }, reject);
3236
+ }, { resolve, reject });
3232
3237
  }
3233
3238
  // options.url must be invalid
3234
3239
  if (!url.startsWith('ws://') && !url.startsWith('wss://')) {
3235
3240
  return handle.fail({
3236
3241
  errMsg: `request:fail invalid url "${url}"`
3237
- }, reject);
3242
+ }, { resolve, reject });
3238
3243
  }
3239
3244
  // protocols must be array
3240
3245
  const _protocols = Array.isArray(protocols) ? protocols : null;
@@ -3242,7 +3247,7 @@ function connectSocket(options) {
3242
3247
  if (socketTasks.length > 1) {
3243
3248
  return handle.fail({
3244
3249
  errMsg: '同时最多发起 2 个 socket 请求,更多请参考文档。'
3245
- }, reject);
3250
+ }, { resolve, reject });
3246
3251
  }
3247
3252
  const task = new SocketTask(url, _protocols);
3248
3253
  task._destroyWhenClose = function () {
@@ -4596,8 +4601,8 @@ const startPullDownRefresh = function ({ success, fail, complete } = {}) {
4596
4601
  const handle = new MethodHandler({ name: 'startPullDownRefresh', success, fail, complete });
4597
4602
  return new Promise((resolve, reject) => {
4598
4603
  Taro__default["default"].eventCenter.trigger('__taroStartPullDownRefresh', {
4599
- successHandler: (res = {}) => handle.success(res, resolve),
4600
- errorHandler: (res = {}) => handle.fail(res, reject)
4604
+ successHandler: (res = {}) => handle.success(res, { resolve, reject }),
4605
+ errorHandler: (res = {}) => handle.fail(res, { resolve, reject })
4601
4606
  });
4602
4607
  });
4603
4608
  };
@@ -4608,8 +4613,8 @@ const stopPullDownRefresh = function ({ success, fail, complete } = {}) {
4608
4613
  const handle = new MethodHandler({ name: 'stopPullDownRefresh', success, fail, complete });
4609
4614
  return new Promise((resolve, reject) => {
4610
4615
  Taro__default["default"].eventCenter.trigger('__taroStopPullDownRefresh', {
4611
- successHandler: (res = {}) => handle.success(res, resolve),
4612
- errorHandler: (res = {}) => handle.fail(res, reject)
4616
+ successHandler: (res = {}) => handle.success(res, { resolve, reject }),
4617
+ errorHandler: (res = {}) => handle.fail(res, { resolve, reject })
4613
4618
  });
4614
4619
  });
4615
4620
  };
@@ -4628,7 +4633,7 @@ const pageScrollTo = ({ scrollTop, selector = '', offsetTop = 0, duration = 300,
4628
4633
  if (scrollTop === undefined && !selector) {
4629
4634
  return handle.fail({
4630
4635
  errMsg: 'scrollTop" 或 "selector" 需要其之一'
4631
- }, reject);
4636
+ }, { resolve, reject });
4632
4637
  }
4633
4638
  const id = (_b = (_a = runtime.Current.page) === null || _a === void 0 ? void 0 : _a.path) === null || _b === void 0 ? void 0 : _b.replace(/([^a-z0-9\u00a0-\uffff_-])/ig, '\\$1');
4634
4639
  const el = (id
@@ -4682,7 +4687,7 @@ const pageScrollTo = ({ scrollTop, selector = '', offsetTop = 0, duration = 300,
4682
4687
  }, FRAME_DURATION);
4683
4688
  }
4684
4689
  else {
4685
- return handle.success({}, resolve);
4690
+ return handle.success({}, { resolve, reject });
4686
4691
  }
4687
4692
  };
4688
4693
  scroll();
@@ -4690,7 +4695,7 @@ const pageScrollTo = ({ scrollTop, selector = '', offsetTop = 0, duration = 300,
4690
4695
  catch (e) {
4691
4696
  return handle.fail({
4692
4697
  errMsg: e.message
4693
- }, reject);
4698
+ }, { resolve, reject });
4694
4699
  }
4695
4700
  });
4696
4701
  };
@@ -4727,8 +4732,8 @@ const showTabBarRedDot = (options) => {
4727
4732
  return new Promise((resolve, reject) => {
4728
4733
  Taro__default["default"].eventCenter.trigger('__taroShowTabBarRedDotHandler', {
4729
4734
  index,
4730
- successHandler: (res = {}) => handle.success(res, resolve),
4731
- errorHandler: (res = {}) => handle.fail(res, reject)
4735
+ successHandler: (res = {}) => handle.success(res, { resolve, reject }),
4736
+ errorHandler: (res = {}) => handle.fail(res, { resolve, reject })
4732
4737
  });
4733
4738
  });
4734
4739
  };
@@ -4757,8 +4762,8 @@ const showTabBar = (options = {}) => {
4757
4762
  return new Promise((resolve, reject) => {
4758
4763
  Taro__default["default"].eventCenter.trigger('__taroShowTabBar', {
4759
4764
  animation,
4760
- successHandler: (res = {}) => handle.success(res, resolve),
4761
- errorHandler: (res = {}) => handle.fail(res, reject)
4765
+ successHandler: (res = {}) => handle.success(res, { resolve, reject }),
4766
+ errorHandler: (res = {}) => handle.fail(res, { resolve, reject })
4762
4767
  });
4763
4768
  });
4764
4769
  };
@@ -4809,8 +4814,8 @@ const setTabBarStyle = (options = {}) => {
4809
4814
  selectedColor,
4810
4815
  backgroundColor,
4811
4816
  borderStyle,
4812
- successHandler: (res = {}) => handle.success(res, resolve),
4813
- errorHandler: (res = {}) => handle.fail(res, reject)
4817
+ successHandler: (res = {}) => handle.success(res, { resolve, reject }),
4818
+ errorHandler: (res = {}) => handle.fail(res, { resolve, reject })
4814
4819
  });
4815
4820
  });
4816
4821
  };
@@ -4842,8 +4847,8 @@ const setTabBarItem = (options) => {
4842
4847
  text,
4843
4848
  iconPath,
4844
4849
  selectedIconPath,
4845
- successHandler: (res = {}) => handle.success(res, resolve),
4846
- errorHandler: (res = {}) => handle.fail(res, reject)
4850
+ successHandler: (res = {}) => handle.success(res, { resolve, reject }),
4851
+ errorHandler: (res = {}) => handle.fail(res, { resolve, reject })
4847
4852
  });
4848
4853
  });
4849
4854
  };
@@ -4882,8 +4887,8 @@ const setTabBarBadge = (options) => {
4882
4887
  Taro__default["default"].eventCenter.trigger('__taroSetTabBarBadge', {
4883
4888
  index,
4884
4889
  text,
4885
- successHandler: (res = {}) => handle.success(res, resolve),
4886
- errorHandler: (res = {}) => handle.fail(res, reject)
4890
+ successHandler: (res = {}) => handle.success(res, { resolve, reject }),
4891
+ errorHandler: (res = {}) => handle.fail(res, { resolve, reject })
4887
4892
  });
4888
4893
  });
4889
4894
  };
@@ -4912,8 +4917,8 @@ const removeTabBarBadge = (options) => {
4912
4917
  return new Promise((resolve, reject) => {
4913
4918
  Taro__default["default"].eventCenter.trigger('__taroRemoveTabBarBadge', {
4914
4919
  index,
4915
- successHandler: (res = {}) => handle.success(res, resolve),
4916
- errorHandler: (res = {}) => handle.fail(res, reject)
4920
+ successHandler: (res = {}) => handle.success(res, { resolve, reject }),
4921
+ errorHandler: (res = {}) => handle.fail(res, { resolve, reject })
4917
4922
  });
4918
4923
  });
4919
4924
  };
@@ -4942,8 +4947,8 @@ const hideTabBarRedDot = (options) => {
4942
4947
  return new Promise((resolve, reject) => {
4943
4948
  Taro__default["default"].eventCenter.trigger('__taroHideTabBarRedDotHandler', {
4944
4949
  index,
4945
- successHandler: (res = {}) => handle.success(res, resolve),
4946
- errorHandler: (res = {}) => handle.fail(res, reject)
4950
+ successHandler: (res = {}) => handle.success(res, { resolve, reject }),
4951
+ errorHandler: (res = {}) => handle.fail(res, { resolve, reject })
4947
4952
  });
4948
4953
  });
4949
4954
  };
@@ -4972,8 +4977,8 @@ const hideTabBar = (options = {}) => {
4972
4977
  return new Promise((resolve, reject) => {
4973
4978
  Taro__default["default"].eventCenter.trigger('__taroHideTabBar', {
4974
4979
  animation,
4975
- successHandler: (res = {}) => handle.success(res, resolve),
4976
- errorHandler: (res = {}) => handle.fail(res, reject)
4980
+ successHandler: (res = {}) => handle.success(res, { resolve, reject }),
4981
+ errorHandler: (res = {}) => handle.fail(res, { resolve, reject })
4977
4982
  });
4978
4983
  });
4979
4984
  };
@@ -5133,7 +5138,7 @@ function generateMediaQueryStr(descriptor) {
5133
5138
  class MediaQueryObserver {
5134
5139
  // 监听页面媒体查询变化情况
5135
5140
  observe(descriptor, callback) {
5136
- if (isFunction(callback)) {
5141
+ if (shared.isFunction(callback)) {
5137
5142
  // 创建媒体查询对象
5138
5143
  this._mediaQueryObserver = window.matchMedia(generateMediaQueryStr(descriptor));
5139
5144
  // 监听器
@@ -5141,7 +5146,7 @@ class MediaQueryObserver {
5141
5146
  callback({ matches: ev.matches });
5142
5147
  };
5143
5148
  callback({ matches: this._mediaQueryObserver.matches });
5144
- // 兼容旧浏览器中MediaQueryList尚未继承于EventTarget导致不存在'addEventListener'
5149
+ // 兼容旧浏览器中 MediaQueryList 尚未继承于 EventTarget 导致不存在 'addEventListener'
5145
5150
  if ('addEventListener' in this._mediaQueryObserver) {
5146
5151
  this._mediaQueryObserver.addEventListener('change', this._listener);
5147
5152
  }
@@ -5153,7 +5158,7 @@ class MediaQueryObserver {
5153
5158
  // 停止监听,销毁媒体查询对象
5154
5159
  disconnect() {
5155
5160
  if (this._mediaQueryObserver && this._listener) {
5156
- // 兼容旧浏览器中MediaQueryList尚未继承于EventTarget导致不存在'removeEventListener'
5161
+ // 兼容旧浏览器中 MediaQueryList 尚未继承于 EventTarget 导致不存在 'removeEventListener'
5157
5162
  if ('removeEventListener' in this._mediaQueryObserver) {
5158
5163
  this._mediaQueryObserver.removeEventListener('change', this._listener);
5159
5164
  }
@@ -5389,9 +5394,9 @@ class SelectorQuery {
5389
5394
  const _queueCb = this._queueCb;
5390
5395
  res.forEach((item, index) => {
5391
5396
  const cb = _queueCb[index];
5392
- typeof cb === 'function' && cb.call(this, item);
5397
+ shared.isFunction(cb) && cb.call(this, item);
5393
5398
  });
5394
- typeof cb === 'function' && cb.call(this, res);
5399
+ shared.isFunction(cb) && cb.call(this, res);
5395
5400
  });
5396
5401
  return this;
5397
5402
  }
@@ -5444,7 +5449,7 @@ const requirePlugin = permanentlyNotSupport('requirePlugin');
5444
5449
  const pxTransform = function (size) {
5445
5450
  const options = taro.config;
5446
5451
  const baseFontSize = options.baseFontSize || 20;
5447
- const designWidth = ((input = 0) => typeof options.designWidth === 'function'
5452
+ const designWidth = ((input = 0) => shared.isFunction(options.designWidth)
5448
5453
  ? options.designWidth(input)
5449
5454
  : options.designWidth);
5450
5455
  const rootValue = (input = 0) => baseFontSize / options.deviceRatio[designWidth(input)] * 2;