@conecli/cone-render 0.10.1-shop3.23 → 0.10.1-shop3.24

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.
@@ -1 +1 @@
1
- import {
2
1
  isApp,
3
2
  isIOS,
4
3
  getAppVersion,
5
4
  version,
6
5
  getUUID,
7
6
  getUrlQuery,
8
7
  assign,
9
8
  isString,
10
9
  isObject,
11
10
  serialize,
12
11
  isAndroid,
13
12
  versionCompare,
14
13
  isIPad,
15
14
  isTablet,
16
15
  CHANNEL_TYPE,
17
16
  JDShopViewBusinessPathType,
18
17
  SECTION_HOME_TAB_NAME_TYPE,
19
18
  SECTION_HOME_TAB_TYPE,
20
19
  DraBuryPointFlags,
21
20
  MPAAS_CONFIG_APP_VERSION,
22
21
  new Promise((resolve, reject) => {
23
22
  if (window?.__sgm__) {
24
23
  resolve(true);
25
24
  } else {
26
25
  if (isSgmReadyError) {
27
26
  console.log('当前sgm初始化失败');
28
27
  reject(false);
29
28
  } else {
30
29
  ready('__sgm__', 2000)
31
30
  .then(() => {
32
31
  isSgmReadyError = false;
33
32
  console.log('当前sgm初始化成功');
34
33
  resolve(true);
35
34
  })
36
35
  .catch(() => {
37
36
  isSgmReadyError = true;
38
37
  console.log('当前sgm初始化失败');
39
38
  reject(false);
40
39
  });
41
40
  }
42
41
  }
43
42
  });
44
43
  console.log(message);
45
44
  reject(new Error(message));
46
45
  return ready('dra', 2000)
47
46
  .then(() => {
48
47
  isNewDraSdkReadyError = false;
49
48
  console.log('当前新版烛龙sdk初始化成功');
50
49
  return true;
51
50
  })
52
51
  .catch(() => {
53
52
  isNewDraSdkReadyError = true;
54
53
  throw new Error('当前新版烛龙sdk初始化失败');
55
54
  });
56
55
  return new Promise((resolve, reject) => {
57
56
  if (window?.dra) {
58
57
  resolve(true);
59
58
  } else if (isNewDraSdkReadyError) {
60
59
  logAndReject('当前新版烛龙sdk初始化失败', reject);
61
60
  } else {
62
61
  initializeDraSdk()
63
62
  .then(resolve)
64
63
  .catch((error) => logAndReject(error.message, reject));
65
64
  }
66
65
  });
67
66
  if (window.screen?.orientation?.type) {
68
67
  console.info(
69
68
  '通过window.screen?.orientation?.type方式获取当前pad屏幕是否是横屏',
70
69
  window.screen?.orientation?.type,
71
70
  '测试低版本通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
72
71
  window?.orientation,
73
72
  );
74
73
  return /landscape/i.test(window.screen.orientation.type);
75
74
  } else if (window?.orientation) {
76
75
  console.info(
77
76
  '通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
78
77
  window?.orientation,
79
78
  );
80
79
  return [90, -90].includes(window?.orientation);
81
80
  } else {
82
81
  console.info(
83
82
  '通过window.matchMedia((orientation: landscape))?.matches方式获取当前pad屏幕是否是横屏',
84
83
  window.matchMedia('(orientation: landscape)')?.matches,
85
84
  );
86
85
  return window.matchMedia('(orientation: landscape)')?.matches;
87
86
  }
88
87
  try {
89
88
  return JSON.parse(decodeURIComponent(getUrlQuery('cookie')));
90
89
  } catch (e) {
91
90
  return {};
92
91
  }
93
92
  'harmony' === (userAgent.split(';')[1] || '').toLowerCase() || /arkweb/i.test(userAgent);
94
93
  window?.location?.hostname === 'pages.jd.com' && isJdAndHarmonyDevice;
95
94
  window.shopGlobalSwitch?.isH5AndJdShopViewH5ScrollVersion || '';
96
95
  !!document.getElementById('mallType') &&
97
96
  !!document.getElementById('pageInstance_id') &&
98
97
  !!document.getElementById('pageInstance_appId');
99
98
  isTjScence &&
100
99
  isWxMiniH5View &&
101
100
  (urlCookie['wxapp_type'] == '2' ||
102
101
  cookie.get('wxapp_type') == '2' ||
103
102
  parseQueryUrlObj['tjChannel'] === 'jxxcx');
104
103
  isTjScence && isWxMiniH5View && parseQueryUrlObj['sourceApp'] === 'haowujie';
105
104
  isTjScence &&
106
105
  (parseQueryUrlObj['appCode'] === 'ms27cba806' ||
107
106
  document.referrer?.match(/(?:https?:)?\/\/(?:kpl\.m|css|cs)\.jd\.com/i)?.length ||
108
107
  (parseQueryUrlObj['sourceApp'] == 'jsb-m' && parseQueryUrlObj['appCode'] === '') ||
109
108
  parseQueryUrlObj['tjChannel'] === 'tjm');
110
109
  if (isH5AdnJxMini) {
111
110
  return 'jxxcx';
112
111
  } else if (isTJApp) {
113
112
  return 'tjapp';
114
113
  } else if (isTjM) {
115
114
  return 'tjm';
116
115
  } else if (isTjJxM) {
117
116
  return 'jxh5';
118
117
  }
119
118
  return '';
120
119
  START: 'start',
121
120
  MOVE: 'move',
122
121
  END: 'end',
123
122
  x: 0,
124
123
  y: 0,
125
124
  const startX = startPos.x;
126
125
  const startY = startPos.y;
127
126
  const endX = touchEvent.clientX;
128
127
  const endY = touchEvent.clientY;
129
128
  const dy = startY - endY;
130
129
  const dx = endX - startX;
131
130
  let result = 0;
132
131
  if (Math.abs(dx) < 2 && Math.abs(dy) < 2) {
133
132
  return result;
134
133
  }
135
134
  const angle = (Math.atan2(dy, dx) * 180) / Math.PI;
136
135
  if (angle >= -45 && angle < 45) {
137
136
  result = 4;
138
137
  } else if (angle >= 45 && angle < 135) {
139
138
  result = 1;
140
139
  } else if (angle >= -135 && angle < -45) {
141
140
  result = 2;
142
141
  } else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {
143
142
  result = 3;
144
143
  }
145
144
  return result;
146
145
  e: Event,
147
146
  touchType = TouchType.START,
148
147
  stopTouchDocumentScrollState = false,
149
148
  if (isJdApp && e) {
150
149
  const touchEvent = e?.originalEvent?.targetTouches[0] || e?.targetTouches[0];
151
150
  let _touchState = touchType;
152
151
  let _getDirectionState = false;
153
152
  if (touchType === TouchType.START) {
154
153
  StopNativeScrollEventPos.x = touchEvent.clientX;
155
154
  StopNativeScrollEventPos.y = touchEvent.clientY;
156
155
  } else if (touchType === TouchType.MOVE) {
157
156
  _getDirectionState = [1, 2].includes(
158
157
  touchMoveGetSlideDirection(StopNativeScrollEventPos, touchEvent),
159
158
  );
160
159
  if (_getDirectionState) {
161
160
  _touchState = TouchType.END;
162
161
  }
163
162
  console.log(
164
163
  '对外提供阻止横滑方法,当前touchType为move,设定1、2向上或向下方向,当前计算后的滑动是否为纵向',
165
164
  _getDirectionState,
166
165
  );
167
166
  } else if (touchType === TouchType.END) {
168
167
  StopNativeScrollEventPos.x = 0;
169
168
  StopNativeScrollEventPos.y = 0;
170
169
  }
171
170
  isIosDevice
172
171
  ? iosDeviceStopNativeScrollEvent(e, _touchState, stopTouchDocumentScrollState)
173
172
  : androidDeviceStopNativeScrollEvent(_touchState, stopTouchDocumentScrollState);
174
173
  if (
175
174
  !isAppHomeForMarketPage &&
176
175
  stopTouchDocumentScrollState &&
177
176
  _touchState === TouchType.START
178
177
  ) {
179
178
  rootEleNode && rootEleNode.classList.add('over-hidden');
180
179
  }
181
180
  if (_touchState === TouchType.MOVE && _getDirectionState) {
182
181
  rootEleNode &&
183
182
  rootEleNode.classList.contains('over-hidden') &&
184
183
  rootEleNode.classList.remove('over-hidden');
185
184
  } else if (_touchState === TouchType.END) {
186
185
  setTimeout(
187
186
  () => {
188
187
  rootEleNode &&
189
188
  rootEleNode.classList.contains('over-hidden') &&
190
189
  rootEleNode.classList.remove('over-hidden');
191
190
  },
192
191
  isAppHomeForMarketPage || _getDirectionState ? 0 : 200,
193
192
  );
194
193
  }
195
194
  }
196
195
  touchType = TouchType.START,
197
196
  stopTouchDocumentScrollState = false,
198
197
  isJdApp &&
199
198
  touchType !== TouchType.MOVE &&
200
199
  isAndroidDevice &&
201
200
  window?.JdAndroid &&
202
201
  window?.JdAndroid?.requestEvent &&
203
202
  window.JdAndroid.requestEvent(touchType === TouchType.START);
204
203
  console.log(
205
204
  '对外提供阻止安卓横滑方法,true-禁止外部事件H5可滑动,false-外部拦截h5事件,当前touchType为',
206
205
  touchType,
207
206
  '当前非move触发requestEvent状态为',
208
207
  touchType === TouchType.START,
209
208
  '当前stopTouchDocumentScrollState为',
210
209
  stopTouchDocumentScrollState,
211
210
  );
212
211
  e,
213
212
  touchType = TouchType.START,
214
213
  stopTouchDocumentScrollState = false,
215
214
  e && e.stopPropagation();
216
215
  console.log(
217
216
  '对外提供阻止ios横滑方法,当前touchType为',
218
217
  touchType,
219
218
  '当前stopTouchDocumentScrollState为',
220
219
  stopTouchDocumentScrollState,
221
220
  );
222
221
  window?.webkit?.messageHandlers?.MobileNavi?.postMessage?.({
223
222
  method: 'callRouterModuleWithParams',
224
223
  params: {
225
224
  routerURL: 'router://JDShopModule/processShoph5SlideState',
226
225
  routerParam: {
227
226
  slideDirection: 'horizontal',
228
227
  state: touchType,
229
228
  },
230
229
  callBackId: new Date().getTime(),
231
230
  },
232
231
  });
233
232
  if (isH5AndJdShopView) {
234
233
  return CHANNEL_TYPE[currentChannel] || CHANNEL_TYPE[JDShopViewBusinessPathType.HOME];
235
234
  }
236
235
  return null;
237
236
  isH5 &&
238
237
  isJdApp &&
239
238
  [
240
239
  '/app/home',
241
240
  '/app/homeV2',
242
241
  '/app/classify',
243
242
  '/app/classifyV2',
244
243
  '/member/shopcard',
245
244
  '/favorite/home',
246
245
  ].includes(urlPathname);
247
246
  isH5 && isJdApp && !['/app/home', '/app/homeV2'].includes(urlPathname);
248
247
  ['/app/home', '/app/homeV2'].includes(urlPathname) &&
249
248
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_PROMOTION &&
250
249
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_MEMBER;
251
250
  isAppHomePage && parseQueryUrlObj['source'] === 'app-marketing';
252
251
  isH5 &&
253
252
  isAppHomePage &&
254
253
  versionCompare(jdAppVersion?.full ? jdAppVersion.full : '', isH5AndJdShopViewH5ScrollVersion) >=
255
254
  0;
256
255
  return isJdApp ? versionCompare(nowVersion, compareVersion) : -2;
257
256
  getSgmReadyPromise()
258
257
  .then(() => {
259
258
  if (
260
259
  customObj.hasOwnProperty('code') &&
261
260
  customObj.code.indexOf(NO_ENVIRONMENT_AND_PAGE_TYPE_FLAG) !== -1
262
261
  ) {
263
262
  const originCode = customObj.code.substring(
264
263
  NO_ENVIRONMENT_AND_PAGE_TYPE_FLAG.length,
265
264
  customObj.code.length,
266
265
  );
267
266
  customObj['code'] = getSgmCustomCode(handleSgmCodeTaroVersion(originCode));
268
267
  }
269
268
  const getCustomObj = {
270
269
  type: 1,
271
270
  code: 'all',
272
271
  cost1: 1,
273
272
  ...customObj,
274
273
  };
275
274
  try {
276
275
  window.__sgm__.custom(getCustomObj, '9HwAEg@fTtWBB3EnwA5VgLT');
277
276
  } catch (e) {
278
277
  console.log('当前sgm上报异常, 原始数据为', JSON.stringify(customObj));
279
278
  }
280
279
  })
281
280
  .catch(() => {
282
281
  console.error('当前页面sgm加载异常,无法进行异常上报, 原始数据为', JSON.stringify(customObj));
283
282
  });
284
283
  try {
285
284
  await getNewDraSdkReadyPromise();
286
285
  const draBurypointFlag = name ?? DraBuryPointFlags.BUSINESS;
287
286
  const commonObj = {
288
287
  shopId: `${global.info.queryInfo.shopId || ''}`,
289
288
  venderId: `${global.info.queryInfo.venderId || ''}`,
290
289
  taroRenderVersion: window?.taroRenderVersion,
291
290
  environmentType: getEnvironmentType(),
292
291
  pageType: getPageType(),
293
292
  };
294
293
  try {
295
294
  window.dra.sendCustomEvent(
296
295
  {
297
296
  name: draBurypointFlag,
298
297
  metrics: {
299
298
  timeStamp: Date.now(),
300
299
  ...customMetricsObj,
301
300
  },
302
301
  context: {
303
302
  ...commonObj,
304
303
  ...customContextObj,
305
304
  },
306
305
  },
307
306
  true,
308
307
  );
309
308
  } catch (e) {
310
309
  console.error(
311
310
  '当前新版烛龙sdk上报异常, 原始数据为',
312
311
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
313
312
  'e',
314
313
  e,
315
314
  );
316
315
  }
317
316
  } catch (e) {
318
317
  console.error(
319
318
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
320
319
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
321
320
  'e',
322
321
  e,
323
322
  );
324
323
  }
325
324
  try {
326
325
  await getNewDraSdkReadyPromise();
327
326
  const commonObj = {
328
327
  shopId: `${global.info.queryInfo.shopId || ''}`,
329
328
  venderId: `${global.info.queryInfo.venderId || ''}`,
330
329
  taroRenderVersion: window?.taroRenderVersion,
331
330
  environmentType: getEnvironmentType(),
332
331
  pageType: getPageType(),
333
332
  url: encodeURIComponent(window?.location?.href),
334
333
  };
335
334
  try {
336
335
  window.dra.sendCustomLogEvent(
337
336
  {
338
337
  level,
339
338
  content: logContent || "日志上报",
340
339
  extra: JSON.stringify(commonObj),
341
340
  timeStamp: Date.now()
342
341
  },
343
342
  );
344
343
  } catch (e) {
345
344
  console.error(
346
345
  '日志等级',
347
346
  level,
348
347
  '当前新版烛龙sdk上报异常, 原始数据为',
349
348
  logContent,
350
349
  'e',
351
350
  e,
352
351
  );
353
352
  }
354
353
  } catch (e2) {
355
354
  console.error(
356
355
  '日志等级',
357
356
  level,
358
357
  '当前新版烛龙sdk上报异常, 原始数据为',
359
358
  logContent,
360
359
  'e',
361
360
  e2,
362
361
  );
363
362
  }
364
363
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.REMOTE);
365
364
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.INTERFACE);
366
365
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.BUSINESS);
367
366
  const deviceRatio = window?.devicePixelRatio ?? 2;
368
367
  if (isJdAndAndroidDevice && typeof displayObj === 'object') {
369
368
  Object.keys(displayObj).forEach((key) => {
370
369
  if (key === 'nativeHeaderHeight') {
371
370
  displayObj[key] = Math.ceil(displayObj[key] / (deviceRatio * deviceRatio) - 2);
372
371
  } else {
373
372
  displayObj[key] = Math.ceil(displayObj[key] / deviceRatio);
374
373
  }
375
374
  });
376
375
  } else if (isJdAndHarmonyDevice && isNewHarmonyShop && typeof displayObj === 'object') {
377
376
  if (displayObj['bottomBarHeight'] && typeof displayObj['bottomBarHeight'] === 'number') {
378
377
  displayObj['bottomBarHeight'] = Math.ceil(displayObj['bottomBarHeight'] / deviceRatio);
379
378
  }
380
379
  }
381
380
  return displayObj;
382
381
  isJdAndAndroidDevice && /TBS\/\d+/.test(window?.navigator?.userAgent);
383
382
  rootEleNode &&
384
383
  !rootEleNode.classList.contains('d-shop-lang-for-en') &&
385
384
  rootEleNode.classList.add('d-shop-lang-for-en');
386
385
  customContextObj = {},
387
386
  customMetricsObj = {},
388
387
  name?,
389
388
  try {
390
389
  const draBurypointFlag = name ?? DraBuryPointFlags.DECOSDM;
391
390
  try {
392
391
  let dra = null;
393
392
  const iframe = window?.top?.document?.getElementsByTagName('iframe')[0];
394
393
  if (iframe && iframe.contentWindow) {
395
394
  dra = iframe.contentWindow?.dra;
396
395
  }
397
396
  if (window.dra) {
398
397
  dra = window.dra;
399
398
  }
400
399
  dra &&
401
400
  dra.sendCustomEvent(
402
401
  {
403
402
  name: draBurypointFlag,
404
403
  metrics: {
405
404
  timeStamp: Date.now(),
406
405
  },
407
406
  context: {
408
407
  ...customContextObj,
409
408
  },
410
409
  },
411
410
  true,
412
411
  );
413
412
  } catch (e) {
414
413
  console.error(
415
414
  '当前新版烛龙sdk上报异常, 原始数据为',
416
415
  JSON.stringify({ ...customContextObj }),
417
416
  'e',
418
417
  e,
419
418
  );
420
419
  }
421
420
  } catch (e) {
422
421
  console.error(
423
422
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
424
423
  JSON.stringify({ ...customContextObj }),
425
424
  'e',
426
425
  e,
427
426
  );
428
427
  }
428
+ import {
429
429
  isApp,
430
430
  isIOS,
431
431
  getAppVersion,
432
432
  version,
433
433
  getUUID,
434
434
  getUrlQuery,
435
435
  assign,
436
436
  isString,
437
437
  isObject,
438
438
  serialize,
439
439
  isAndroid,
440
440
  versionCompare,
441
441
  isIPad,
442
442
  isTablet,
443
443
  CHANNEL_TYPE,
444
444
  JDShopViewBusinessPathType,
445
445
  SECTION_HOME_TAB_NAME_TYPE,
446
446
  SECTION_HOME_TAB_TYPE,
447
447
  DraBuryPointFlags,
448
448
  MPAAS_CONFIG_APP_VERSION,
449
449
  new Promise((resolve, reject) => {
450
450
  if (window?.__sgm__) {
451
451
  resolve(true);
452
452
  } else {
453
453
  if (isSgmReadyError) {
454
454
  console.log('当前sgm初始化失败');
455
455
  reject(false);
456
456
  } else {
457
457
  ready('__sgm__', 2000)
458
458
  .then(() => {
459
459
  isSgmReadyError = false;
460
460
  console.log('当前sgm初始化成功');
461
461
  resolve(true);
462
462
  })
463
463
  .catch(() => {
464
464
  isSgmReadyError = true;
465
465
  console.log('当前sgm初始化失败');
466
466
  reject(false);
467
467
  });
468
468
  }
469
469
  }
470
470
  });
471
471
  console.log(message);
472
472
  reject(new Error(message));
473
473
  return ready('dra', 2000)
474
474
  .then(() => {
475
475
  isNewDraSdkReadyError = false;
476
476
  console.log('当前新版烛龙sdk初始化成功');
477
477
  return true;
478
478
  })
479
479
  .catch(() => {
480
480
  isNewDraSdkReadyError = true;
481
481
  throw new Error('当前新版烛龙sdk初始化失败');
482
482
  });
483
483
  return new Promise((resolve, reject) => {
484
484
  if (window?.dra) {
485
485
  resolve(true);
486
486
  } else if (isNewDraSdkReadyError) {
487
487
  logAndReject('当前新版烛龙sdk初始化失败', reject);
488
488
  } else {
489
489
  initializeDraSdk()
490
490
  .then(resolve)
491
491
  .catch((error) => logAndReject(error.message, reject));
492
492
  }
493
493
  });
494
494
  rootEleInitWidth = 0,
495
495
  screenWidth = 0,
496
496
  screenHeight = 0,
497
497
  if (rootEleInitWidth > 0 && screenWidth > 0 && screenHeight > 0) {
498
498
  const isRootEleWidthEqScreenWidth = Math.abs(rootEleInitWidth - screenWidth) < 60;
499
499
  const getThisWinWidth = rootEleInitWidth;
500
500
  const getThisWinHeight = isRootEleWidthEqScreenWidth ? screenHeight : screenWidth;
501
501
  console.info(
502
502
  '通过rootEleInitWidth对比屏幕宽高确认横竖屏幕方式',
503
503
  'rootEleInitWidth',
504
504
  rootEleInitWidth,
505
505
  'screenWidth',
506
506
  screenWidth,
507
507
  'screenHeight',
508
508
  screenHeight,
509
509
  'isRootEleWidthEqScreenWidth(根元素宽度是否与屏幕本身宽度接近,主要是ios屏幕宽高不变)',
510
510
  isRootEleWidthEqScreenWidth,
511
511
  'getThisWinWidth',
512
512
  getThisWinWidth,
513
513
  'getThisWinHeight',
514
514
  getThisWinHeight,
515
515
  '是否是横屏',
516
516
  getThisWinWidth > getThisWinHeight,
517
517
  '通过window.screen?.orientation?.type方式获取当前pad屏幕是否是横屏,带有landscape为横屏',
518
518
  window.screen?.orientation?.type,
519
519
  );
520
520
  return getThisWinWidth > getThisWinHeight;
521
521
  } else {
522
522
  if (window.screen?.orientation?.type) {
523
523
  console.info(
524
524
  '通过window.screen?.orientation?.type方式获取当前pad屏幕是否是横屏',
525
525
  window.screen?.orientation?.type,
526
526
  '测试低版本通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
527
527
  window?.orientation,
528
528
  );
529
529
  return /landscape/i.test(window.screen.orientation.type);
530
530
  } else if (window?.orientation) {
531
531
  console.info(
532
532
  '通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
533
533
  window?.orientation,
534
534
  );
535
535
  return [90, -90].includes(window?.orientation);
536
536
  } else {
537
537
  console.info(
538
538
  '通过window.matchMedia((orientation: landscape))?.matches方式获取当前pad屏幕是否是横屏',
539
539
  window.matchMedia('(orientation: landscape)')?.matches,
540
540
  );
541
541
  return window.matchMedia('(orientation: landscape)')?.matches;
542
542
  }
543
543
  }
544
544
  try {
545
545
  return JSON.parse(decodeURIComponent(getUrlQuery('cookie')));
546
546
  } catch (e) {
547
547
  return {};
548
548
  }
549
549
  'harmony' === (userAgent.split(';')[1] || '').toLowerCase() || /arkweb/i.test(userAgent);
550
550
  window?.location?.hostname === 'pages.jd.com' && isJdAndHarmonyDevice;
551
551
  window.shopGlobalSwitch?.isH5AndJdShopViewH5ScrollVersion || '';
552
552
  !!document.getElementById('mallType') &&
553
553
  !!document.getElementById('pageInstance_id') &&
554
554
  !!document.getElementById('pageInstance_appId');
555
555
  isTjScence &&
556
556
  isWxMiniH5View &&
557
557
  (urlCookie['wxapp_type'] == '2' ||
558
558
  cookie.get('wxapp_type') == '2' ||
559
559
  parseQueryUrlObj['tjChannel'] === 'jxxcx');
560
560
  isTjScence && isWxMiniH5View && parseQueryUrlObj['sourceApp'] === 'haowujie';
561
561
  isTjScence &&
562
562
  (parseQueryUrlObj['appCode'] === 'ms27cba806' ||
563
563
  document.referrer?.match(/(?:https?:)?\/\/(?:kpl\.m|css|cs)\.jd\.com/i)?.length ||
564
564
  (parseQueryUrlObj['sourceApp'] == 'jsb-m' && parseQueryUrlObj['appCode'] === '') ||
565
565
  parseQueryUrlObj['tjChannel'] === 'tjm');
566
566
  if (isH5AdnJxMini) {
567
567
  return 'jxxcx';
568
568
  } else if (isTJApp) {
569
569
  return 'tjapp';
570
570
  } else if (isTjM) {
571
571
  return 'tjm';
572
572
  } else if (isTjJxM) {
573
573
  return 'jxh5';
574
574
  }
575
575
  return '';
576
576
  START: 'start',
577
577
  MOVE: 'move',
578
578
  END: 'end',
579
579
  x: 0,
580
580
  y: 0,
581
581
  const startX = startPos.x;
582
582
  const startY = startPos.y;
583
583
  const endX = touchEvent.clientX;
584
584
  const endY = touchEvent.clientY;
585
585
  const dy = startY - endY;
586
586
  const dx = endX - startX;
587
587
  let result = 0;
588
588
  if (Math.abs(dx) < 2 && Math.abs(dy) < 2) {
589
589
  return result;
590
590
  }
591
591
  const angle = (Math.atan2(dy, dx) * 180) / Math.PI;
592
592
  if (angle >= -45 && angle < 45) {
593
593
  result = 4;
594
594
  } else if (angle >= 45 && angle < 135) {
595
595
  result = 1;
596
596
  } else if (angle >= -135 && angle < -45) {
597
597
  result = 2;
598
598
  } else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {
599
599
  result = 3;
600
600
  }
601
601
  return result;
602
602
  e: Event,
603
603
  touchType = TouchType.START,
604
604
  stopTouchDocumentScrollState = false,
605
605
  if (isJdApp && e) {
606
606
  const touchEvent = e?.originalEvent?.targetTouches[0] || e?.targetTouches[0];
607
607
  let _touchState = touchType;
608
608
  let _getDirectionState = false;
609
609
  if (touchType === TouchType.START) {
610
610
  StopNativeScrollEventPos.x = touchEvent.clientX;
611
611
  StopNativeScrollEventPos.y = touchEvent.clientY;
612
612
  } else if (touchType === TouchType.MOVE) {
613
613
  _getDirectionState = [1, 2].includes(
614
614
  touchMoveGetSlideDirection(StopNativeScrollEventPos, touchEvent),
615
615
  );
616
616
  if (_getDirectionState) {
617
617
  _touchState = TouchType.END;
618
618
  }
619
619
  console.log(
620
620
  '对外提供阻止横滑方法,当前touchType为move,设定1、2向上或向下方向,当前计算后的滑动是否为纵向',
621
621
  _getDirectionState,
622
622
  );
623
623
  } else if (touchType === TouchType.END) {
624
624
  StopNativeScrollEventPos.x = 0;
625
625
  StopNativeScrollEventPos.y = 0;
626
626
  }
627
627
  isIosDevice
628
628
  ? iosDeviceStopNativeScrollEvent(e, _touchState, stopTouchDocumentScrollState)
629
629
  : androidDeviceStopNativeScrollEvent(_touchState, stopTouchDocumentScrollState);
630
630
  if (
631
631
  !isAppHomeForMarketPage &&
632
632
  stopTouchDocumentScrollState &&
633
633
  _touchState === TouchType.START
634
634
  ) {
635
635
  rootEleNode && rootEleNode.classList.add('over-hidden');
636
636
  }
637
637
  if (_touchState === TouchType.MOVE && _getDirectionState) {
638
638
  rootEleNode &&
639
639
  rootEleNode.classList.contains('over-hidden') &&
640
640
  rootEleNode.classList.remove('over-hidden');
641
641
  } else if (_touchState === TouchType.END) {
642
642
  setTimeout(
643
643
  () => {
644
644
  rootEleNode &&
645
645
  rootEleNode.classList.contains('over-hidden') &&
646
646
  rootEleNode.classList.remove('over-hidden');
647
647
  },
648
648
  isAppHomeForMarketPage || _getDirectionState ? 0 : 200,
649
649
  );
650
650
  }
651
651
  }
652
652
  touchType = TouchType.START,
653
653
  stopTouchDocumentScrollState = false,
654
654
  isJdApp &&
655
655
  touchType !== TouchType.MOVE &&
656
656
  isAndroidDevice &&
657
657
  window?.JdAndroid &&
658
658
  window?.JdAndroid?.requestEvent &&
659
659
  window.JdAndroid.requestEvent(touchType === TouchType.START);
660
660
  console.log(
661
661
  '对外提供阻止安卓横滑方法,true-禁止外部事件H5可滑动,false-外部拦截h5事件,当前touchType为',
662
662
  touchType,
663
663
  '当前非move触发requestEvent状态为',
664
664
  touchType === TouchType.START,
665
665
  '当前stopTouchDocumentScrollState为',
666
666
  stopTouchDocumentScrollState,
667
667
  );
668
668
  e,
669
669
  touchType = TouchType.START,
670
670
  stopTouchDocumentScrollState = false,
671
671
  e && e.stopPropagation();
672
672
  console.log(
673
673
  '对外提供阻止ios横滑方法,当前touchType为',
674
674
  touchType,
675
675
  '当前stopTouchDocumentScrollState为',
676
676
  stopTouchDocumentScrollState,
677
677
  );
678
678
  window?.webkit?.messageHandlers?.MobileNavi?.postMessage?.({
679
679
  method: 'callRouterModuleWithParams',
680
680
  params: {
681
681
  routerURL: 'router://JDShopModule/processShoph5SlideState',
682
682
  routerParam: {
683
683
  slideDirection: 'horizontal',
684
684
  state: touchType,
685
685
  },
686
686
  callBackId: new Date().getTime(),
687
687
  },
688
688
  });
689
689
  if (isH5AndJdShopView) {
690
690
  return CHANNEL_TYPE[currentChannel] || CHANNEL_TYPE[JDShopViewBusinessPathType.HOME];
691
691
  }
692
692
  return null;
693
693
  isH5 &&
694
694
  isJdApp &&
695
695
  [
696
696
  '/app/home',
697
697
  '/app/homeV2',
698
698
  '/app/classify',
699
699
  '/app/classifyV2',
700
700
  '/member/shopcard',
701
701
  '/favorite/home',
702
702
  ].includes(urlPathname);
703
703
  isH5 && isJdApp && !['/app/home', '/app/homeV2'].includes(urlPathname);
704
704
  ['/app/home', '/app/homeV2'].includes(urlPathname) &&
705
705
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_PROMOTION &&
706
706
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_MEMBER;
707
707
  isAppHomePage && parseQueryUrlObj['source'] === 'app-marketing';
708
708
  isH5 &&
709
709
  isAppHomePage &&
710
710
  versionCompare(jdAppVersion?.full ? jdAppVersion.full : '', isH5AndJdShopViewH5ScrollVersion) >=
711
711
  0;
712
712
  return isJdApp ? versionCompare(nowVersion, compareVersion) : -2;
713
713
  getSgmReadyPromise()
714
714
  .then(() => {
715
715
  if (
716
716
  customObj.hasOwnProperty('code') &&
717
717
  customObj.code.indexOf(NO_ENVIRONMENT_AND_PAGE_TYPE_FLAG) !== -1
718
718
  ) {
719
719
  const originCode = customObj.code.substring(
720
720
  NO_ENVIRONMENT_AND_PAGE_TYPE_FLAG.length,
721
721
  customObj.code.length,
722
722
  );
723
723
  customObj['code'] = getSgmCustomCode(handleSgmCodeTaroVersion(originCode));
724
724
  }
725
725
  const getCustomObj = {
726
726
  type: 1,
727
727
  code: 'all',
728
728
  cost1: 1,
729
729
  ...customObj,
730
730
  };
731
731
  try {
732
732
  window.__sgm__.custom(getCustomObj, '9HwAEg@fTtWBB3EnwA5VgLT');
733
733
  } catch (e) {
734
734
  console.log('当前sgm上报异常, 原始数据为', JSON.stringify(customObj));
735
735
  }
736
736
  })
737
737
  .catch(() => {
738
738
  console.error('当前页面sgm加载异常,无法进行异常上报, 原始数据为', JSON.stringify(customObj));
739
739
  });
740
740
  try {
741
741
  await getNewDraSdkReadyPromise();
742
742
  const draBurypointFlag = name ?? DraBuryPointFlags.BUSINESS;
743
743
  const commonObj = {
744
744
  shopId: `${global.info.queryInfo.shopId || ''}`,
745
745
  venderId: `${global.info.queryInfo.venderId || ''}`,
746
746
  taroRenderVersion: window?.taroRenderVersion,
747
747
  environmentType: getEnvironmentType(),
748
748
  pageType: getPageType(),
749
749
  };
750
750
  try {
751
751
  window.dra.sendCustomEvent(
752
752
  {
753
753
  name: draBurypointFlag,
754
754
  metrics: {
755
755
  timeStamp: Date.now(),
756
756
  ...customMetricsObj,
757
757
  },
758
758
  context: {
759
759
  ...commonObj,
760
760
  ...customContextObj,
761
761
  },
762
762
  },
763
763
  true,
764
764
  );
765
765
  } catch (e) {
766
766
  console.error(
767
767
  '当前新版烛龙sdk上报异常, 原始数据为',
768
768
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
769
769
  'e',
770
770
  e,
771
771
  );
772
772
  }
773
773
  } catch (e) {
774
774
  console.error(
775
775
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
776
776
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
777
777
  'e',
778
778
  e,
779
779
  );
780
780
  }
781
781
  try {
782
782
  await getNewDraSdkReadyPromise();
783
783
  const commonObj = {
784
784
  shopId: `${global.info.queryInfo.shopId || ''}`,
785
785
  venderId: `${global.info.queryInfo.venderId || ''}`,
786
786
  taroRenderVersion: window?.taroRenderVersion,
787
787
  environmentType: getEnvironmentType(),
788
788
  pageType: getPageType(),
789
789
  url: encodeURIComponent(window?.location?.href),
790
790
  };
791
791
  try {
792
792
  window.dra.sendCustomLogEvent(
793
793
  {
794
794
  level,
795
795
  content: logContent || "日志上报",
796
796
  extra: JSON.stringify(commonObj),
797
797
  timeStamp: Date.now()
798
798
  },
799
799
  );
800
800
  } catch (e) {
801
801
  console.error(
802
802
  '日志等级',
803
803
  level,
804
804
  '当前新版烛龙sdk上报异常, 原始数据为',
805
805
  logContent,
806
806
  'e',
807
807
  e,
808
808
  );
809
809
  }
810
810
  } catch (e2) {
811
811
  console.error(
812
812
  '日志等级',
813
813
  level,
814
814
  '当前新版烛龙sdk上报异常, 原始数据为',
815
815
  logContent,
816
816
  'e',
817
817
  e2,
818
818
  );
819
819
  }
820
820
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.REMOTE);
821
821
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.INTERFACE);
822
822
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.BUSINESS);
823
823
  const deviceRatio = window?.devicePixelRatio ?? 2;
824
824
  if (isJdAndAndroidDevice && typeof displayObj === 'object') {
825
825
  Object.keys(displayObj).forEach((key) => {
826
826
  if (key === 'nativeHeaderHeight') {
827
827
  displayObj[key] = Math.ceil(displayObj[key] / (deviceRatio * deviceRatio) - 2);
828
828
  } else {
829
829
  displayObj[key] = Math.ceil(displayObj[key] / deviceRatio);
830
830
  }
831
831
  });
832
832
  } else if (isJdAndHarmonyDevice && isNewHarmonyShop && typeof displayObj === 'object') {
833
833
  if (displayObj['bottomBarHeight'] && typeof displayObj['bottomBarHeight'] === 'number') {
834
834
  displayObj['bottomBarHeight'] = Math.ceil(displayObj['bottomBarHeight'] / deviceRatio);
835
835
  }
836
836
  }
837
837
  return displayObj;
838
838
  isJdAndAndroidDevice && /TBS\/\d+/.test(window?.navigator?.userAgent);
839
839
  rootEleNode &&
840
840
  !rootEleNode.classList.contains('d-shop-lang-for-en') &&
841
841
  rootEleNode.classList.add('d-shop-lang-for-en');
842
842
  customContextObj = {},
843
843
  customMetricsObj = {},
844
844
  name?,
845
845
  try {
846
846
  const draBurypointFlag = name ?? DraBuryPointFlags.DECOSDM;
847
847
  try {
848
848
  let dra = null;
849
849
  const iframe = window?.top?.document?.getElementsByTagName('iframe')[0];
850
850
  if (iframe && iframe.contentWindow) {
851
851
  dra = iframe.contentWindow?.dra;
852
852
  }
853
853
  if (window.dra) {
854
854
  dra = window.dra;
855
855
  }
856
856
  dra &&
857
857
  dra.sendCustomEvent(
858
858
  {
859
859
  name: draBurypointFlag,
860
860
  metrics: {
861
861
  timeStamp: Date.now(),
862
862
  },
863
863
  context: {
864
864
  ...customContextObj,
865
865
  },
866
866
  },
867
867
  true,
868
868
  );
869
869
  } catch (e) {
870
870
  console.error(
871
871
  '当前新版烛龙sdk上报异常, 原始数据为',
872
872
  JSON.stringify({ ...customContextObj }),
873
873
  'e',
874
874
  e,
875
875
  );
876
876
  }
877
877
  } catch (e) {
878
878
  console.error(
879
879
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
880
880
  JSON.stringify({ ...customContextObj }),
881
881
  'e',
882
882
  e,
883
883
  );
884
884
  }