customer-chat-sdk 1.1.19 → 1.1.20
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/core/CustomerSDK.d.ts.map +1 -1
- package/dist/core/IconManager.d.ts.map +1 -1
- package/dist/customer-sdk.cjs.js +60 -11
- package/dist/customer-sdk.esm.js +60 -11
- package/dist/customer-sdk.min.js +2 -2
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomerSDK.d.ts","sourceRoot":"","sources":["../../src/core/CustomerSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAKpC,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,KAAK,CAAiB;;IAI9B;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA+C5C;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAM7B;;OAEG;IACH,mBAAmB,IAAI;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE;IAI7C;;OAEG;IACH,gBAAgB,CAAC,UAAU,GAAE,MAAM,GAAG,MAAU,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAsB7G;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,OAAO,IAAI,IAAI;IAYf;;OAEG;YACW,WAAW;IA8BzB;;OAEG;IACH,OAAO,CAAC,cAAc;
|
|
1
|
+
{"version":3,"file":"CustomerSDK.d.ts","sourceRoot":"","sources":["../../src/core/CustomerSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAKpC,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,KAAK,CAAiB;;IAI9B;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA+C5C;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAM7B;;OAEG;IACH,mBAAmB,IAAI;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE;IAI7C;;OAEG;IACH,gBAAgB,CAAC,UAAU,GAAE,MAAM,GAAG,MAAU,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAsB7G;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,OAAO,IAAI,IAAI;IAYf;;OAEG;YACW,WAAW;IA8BzB;;OAEG;IACH,OAAO,CAAC,cAAc;CAiCvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconManager.d.ts","sourceRoot":"","sources":["../../src/core/IconManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"IconManager.d.ts","sourceRoot":"","sources":["../../src/core/IconManager.ts"],"names":[],"mappings":"AAGA,UAAU,mBAAmB;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,UAAU,YAAY;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACpB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,MAAM,CAAoC;IAGlD,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,iBAAiB,CAAiB;IAC1C,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,eAAe,CAAQ;IAG/B,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,uBAAuB,CAAI;IACnC,OAAO,CAAC,uBAAuB,CAAM;IAGrC,OAAO,CAAC,aAAa,CAA2D;IAChF,OAAO,CAAC,oBAAoB,CAAI;IAChC,OAAO,CAAC,oBAAoB,CAAK;IAGjC,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,eAAe,CAAqC;IAG5D,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,wBAAwB,CAAsB;IACtD,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,aAAa,CAAmB;IAGxC,OAAO,CAAC,aAAa,CAAsD;IAC3E,OAAO,CAAC,eAAe,CAAsD;IAC7E,OAAO,CAAC,gBAAgB,CAAsD;IAC9E,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,mBAAmB,CAA2C;IACtE,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,sBAAsB,CAAiB;IAG/C,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,gBAAgB,CAAiB;IACzC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,eAAe,CAAsB;gBAG3C,QAAQ,CAAC,EAAE,YAAY,EACvB,KAAK,GAAE,OAAe,EACtB,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,EAC7B,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,iBAAiB,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,MAAM,CAAA;QACtC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,eAAe,CAAC,EAAE,MAAM,CAAA;KACzB;IAmBH;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2R3B;;OAEG;IACH,sBAAsB,IAAI,IAAI;IAI9B;;OAEG;IACH,IAAI,IAAI,IAAI;IAuCZ;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;IAIhC;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAqB7C;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAI1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwExB;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAInC;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAInD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IA8BpD;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAUzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAwCvB;;OAEG;IACH,OAAO,CAAC,SAAS;IAwajB;;OAEG;IACH,OAAO,CAAC,MAAM;IA+dd;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAyFnC;;OAEG;IACH,OAAO,CAAC,QAAQ;IA+LhB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA6G5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA8EzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,YAAY,IAAI,IAAI;IAmBpB;;OAEG;IACH,WAAW,IAAI,IAAI;IAmBnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgJpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqCxB;;OAEG;IACH,OAAO,CAAC,WAAW;CAoDpB"}
|
package/dist/customer-sdk.cjs.js
CHANGED
|
@@ -626,23 +626,54 @@ class IconManager {
|
|
|
626
626
|
return;
|
|
627
627
|
const clientX = 'touches' in e ? e.touches[0].clientX : e.clientX;
|
|
628
628
|
const clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
|
|
629
|
-
// PC 模式下,如果 SDK iframe
|
|
630
|
-
|
|
629
|
+
// PC 模式下,如果 SDK iframe 打开,禁止拖动图标,但允许点击
|
|
630
|
+
const isSDKOpen = this.isSDKIframeOpen();
|
|
631
|
+
if (isSDKOpen) {
|
|
631
632
|
if (this.debug) {
|
|
632
|
-
console.log('[IconManager] [PC+iframe] SDK iframe is open, icon dragging disabled');
|
|
633
|
+
console.log('[IconManager] [PC+iframe] SDK iframe is open, icon dragging disabled, but click is allowed');
|
|
634
|
+
}
|
|
635
|
+
// 虽然禁止拖动,但需要添加 mouseup 监听器以支持点击
|
|
636
|
+
// 记录点击开始时间和位置,用于后续判断是否是点击
|
|
637
|
+
this.touchStartTime = Date.now();
|
|
638
|
+
this.lastTouchPosition.x = clientX;
|
|
639
|
+
this.lastTouchPosition.y = clientY;
|
|
640
|
+
this.hasMoved = false;
|
|
641
|
+
this.dragIntent = false;
|
|
642
|
+
this.dragStarted = false;
|
|
643
|
+
this.isDragging = false;
|
|
644
|
+
// 添加 mouseup 监听器,用于检测点击
|
|
645
|
+
if (this.stopDragHandler) {
|
|
646
|
+
document.addEventListener('mouseup', this.stopDragHandler);
|
|
647
|
+
document.addEventListener('touchend', this.stopDragHandler);
|
|
633
648
|
}
|
|
649
|
+
// 直接返回,不进行拖动相关操作
|
|
634
650
|
return;
|
|
635
651
|
}
|
|
636
|
-
// PC 模式下,如果鼠标在任何 iframe 上(排除 SDK 自己的 iframe
|
|
652
|
+
// PC 模式下,如果鼠标在任何 iframe 上(排除 SDK 自己的 iframe),禁止拖动图标,但允许点击
|
|
637
653
|
const isPC = window.innerWidth > 768;
|
|
638
654
|
if (isPC && this.isMouseOverIframe(clientX, clientY)) {
|
|
639
655
|
if (this.debug) {
|
|
640
|
-
console.log('[IconManager] [PC+iframe] Mouse is over iframe, icon dragging disabled', {
|
|
656
|
+
console.log('[IconManager] [PC+iframe] Mouse is over iframe, icon dragging disabled, but click is allowed', {
|
|
641
657
|
clientX,
|
|
642
658
|
clientY,
|
|
643
659
|
isPC
|
|
644
660
|
});
|
|
645
661
|
}
|
|
662
|
+
// 虽然禁止拖动,但需要添加 mouseup 监听器以支持点击
|
|
663
|
+
// 记录点击开始时间和位置,用于后续判断是否是点击
|
|
664
|
+
this.touchStartTime = Date.now();
|
|
665
|
+
this.lastTouchPosition.x = clientX;
|
|
666
|
+
this.lastTouchPosition.y = clientY;
|
|
667
|
+
this.hasMoved = false;
|
|
668
|
+
this.dragIntent = false;
|
|
669
|
+
this.dragStarted = false;
|
|
670
|
+
this.isDragging = false;
|
|
671
|
+
// 添加 mouseup 监听器,用于检测点击
|
|
672
|
+
if (this.stopDragHandler) {
|
|
673
|
+
document.addEventListener('mouseup', this.stopDragHandler);
|
|
674
|
+
document.addEventListener('touchend', this.stopDragHandler);
|
|
675
|
+
}
|
|
676
|
+
// 直接返回,不进行拖动相关操作
|
|
646
677
|
return;
|
|
647
678
|
}
|
|
648
679
|
// 清除自动吸附定时器(用户开始拖动)
|
|
@@ -1490,12 +1521,24 @@ class IconManager {
|
|
|
1490
1521
|
}
|
|
1491
1522
|
return;
|
|
1492
1523
|
}
|
|
1493
|
-
//
|
|
1524
|
+
// 检查是否是点击(即使没有开始拖动,也可能是点击)
|
|
1525
|
+
// 如果 touchStartTime 有值,说明至少有一个 mousedown/touchstart 事件
|
|
1526
|
+
const hasTouchStart = this.touchStartTime > 0;
|
|
1527
|
+
const isPotentialClick = hasTouchStart && !this.isDragging && !this.dragStarted && !this.hasMoved;
|
|
1528
|
+
// 如果已经停止且没有相关资源,但可能是点击,仍然需要处理
|
|
1494
1529
|
if (!this.isDragging && !this.dragStarted && !this.dragTimeoutId && !this.activeDetectionRafId) {
|
|
1495
|
-
|
|
1496
|
-
|
|
1530
|
+
// 如果是潜在的点击(SDK iframe 打开时的点击),继续处理;否则直接返回
|
|
1531
|
+
if (!isPotentialClick) {
|
|
1532
|
+
if (this.debug) {
|
|
1533
|
+
console.warn('[IconManager] stopDrag called but not dragging and not a click, ignoring');
|
|
1534
|
+
}
|
|
1535
|
+
// 清理可能残留的监听器
|
|
1536
|
+
if (this.stopDragHandler) {
|
|
1537
|
+
document.removeEventListener('mouseup', this.stopDragHandler);
|
|
1538
|
+
document.removeEventListener('touchend', this.stopDragHandler);
|
|
1539
|
+
}
|
|
1540
|
+
return;
|
|
1497
1541
|
}
|
|
1498
|
-
return;
|
|
1499
1542
|
}
|
|
1500
1543
|
this.isStoppingDrag = true;
|
|
1501
1544
|
// 在 iframe 上时,如果 mouseup 事件存在,从事件中获取鼠标位置并更新图标位置
|
|
@@ -22646,7 +22689,7 @@ class CustomerServiceSDK {
|
|
|
22646
22689
|
const initResult = {
|
|
22647
22690
|
deviceId,
|
|
22648
22691
|
iframeUrl,
|
|
22649
|
-
referrer: config
|
|
22692
|
+
referrer: this.getReferrer(config),
|
|
22650
22693
|
agent: config.agent,
|
|
22651
22694
|
timestamp: Date.now()
|
|
22652
22695
|
};
|
|
@@ -23055,6 +23098,12 @@ class CustomerServiceSDK {
|
|
|
23055
23098
|
}
|
|
23056
23099
|
return positionChanged || targetChanged;
|
|
23057
23100
|
}
|
|
23101
|
+
/**
|
|
23102
|
+
* 获取 referrer(统一获取逻辑)
|
|
23103
|
+
*/
|
|
23104
|
+
getReferrer(config) {
|
|
23105
|
+
return config.referrer || document.referrer || document.location.href;
|
|
23106
|
+
}
|
|
23058
23107
|
/**
|
|
23059
23108
|
* 构建iframe URL(带用户参数和设备ID)
|
|
23060
23109
|
*/
|
|
@@ -23072,7 +23121,7 @@ class CustomerServiceSDK {
|
|
|
23072
23121
|
url.searchParams.set('Authorization', config.token);
|
|
23073
23122
|
}
|
|
23074
23123
|
url.searchParams.set('DeviceSign', deviceId);
|
|
23075
|
-
url.searchParams.set('Referrer', config
|
|
23124
|
+
url.searchParams.set('Referrer', this.getReferrer(config));
|
|
23076
23125
|
return url.toString();
|
|
23077
23126
|
}
|
|
23078
23127
|
}
|
package/dist/customer-sdk.esm.js
CHANGED
|
@@ -622,23 +622,54 @@ class IconManager {
|
|
|
622
622
|
return;
|
|
623
623
|
const clientX = 'touches' in e ? e.touches[0].clientX : e.clientX;
|
|
624
624
|
const clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
|
|
625
|
-
// PC 模式下,如果 SDK iframe
|
|
626
|
-
|
|
625
|
+
// PC 模式下,如果 SDK iframe 打开,禁止拖动图标,但允许点击
|
|
626
|
+
const isSDKOpen = this.isSDKIframeOpen();
|
|
627
|
+
if (isSDKOpen) {
|
|
627
628
|
if (this.debug) {
|
|
628
|
-
console.log('[IconManager] [PC+iframe] SDK iframe is open, icon dragging disabled');
|
|
629
|
+
console.log('[IconManager] [PC+iframe] SDK iframe is open, icon dragging disabled, but click is allowed');
|
|
630
|
+
}
|
|
631
|
+
// 虽然禁止拖动,但需要添加 mouseup 监听器以支持点击
|
|
632
|
+
// 记录点击开始时间和位置,用于后续判断是否是点击
|
|
633
|
+
this.touchStartTime = Date.now();
|
|
634
|
+
this.lastTouchPosition.x = clientX;
|
|
635
|
+
this.lastTouchPosition.y = clientY;
|
|
636
|
+
this.hasMoved = false;
|
|
637
|
+
this.dragIntent = false;
|
|
638
|
+
this.dragStarted = false;
|
|
639
|
+
this.isDragging = false;
|
|
640
|
+
// 添加 mouseup 监听器,用于检测点击
|
|
641
|
+
if (this.stopDragHandler) {
|
|
642
|
+
document.addEventListener('mouseup', this.stopDragHandler);
|
|
643
|
+
document.addEventListener('touchend', this.stopDragHandler);
|
|
629
644
|
}
|
|
645
|
+
// 直接返回,不进行拖动相关操作
|
|
630
646
|
return;
|
|
631
647
|
}
|
|
632
|
-
// PC 模式下,如果鼠标在任何 iframe 上(排除 SDK 自己的 iframe
|
|
648
|
+
// PC 模式下,如果鼠标在任何 iframe 上(排除 SDK 自己的 iframe),禁止拖动图标,但允许点击
|
|
633
649
|
const isPC = window.innerWidth > 768;
|
|
634
650
|
if (isPC && this.isMouseOverIframe(clientX, clientY)) {
|
|
635
651
|
if (this.debug) {
|
|
636
|
-
console.log('[IconManager] [PC+iframe] Mouse is over iframe, icon dragging disabled', {
|
|
652
|
+
console.log('[IconManager] [PC+iframe] Mouse is over iframe, icon dragging disabled, but click is allowed', {
|
|
637
653
|
clientX,
|
|
638
654
|
clientY,
|
|
639
655
|
isPC
|
|
640
656
|
});
|
|
641
657
|
}
|
|
658
|
+
// 虽然禁止拖动,但需要添加 mouseup 监听器以支持点击
|
|
659
|
+
// 记录点击开始时间和位置,用于后续判断是否是点击
|
|
660
|
+
this.touchStartTime = Date.now();
|
|
661
|
+
this.lastTouchPosition.x = clientX;
|
|
662
|
+
this.lastTouchPosition.y = clientY;
|
|
663
|
+
this.hasMoved = false;
|
|
664
|
+
this.dragIntent = false;
|
|
665
|
+
this.dragStarted = false;
|
|
666
|
+
this.isDragging = false;
|
|
667
|
+
// 添加 mouseup 监听器,用于检测点击
|
|
668
|
+
if (this.stopDragHandler) {
|
|
669
|
+
document.addEventListener('mouseup', this.stopDragHandler);
|
|
670
|
+
document.addEventListener('touchend', this.stopDragHandler);
|
|
671
|
+
}
|
|
672
|
+
// 直接返回,不进行拖动相关操作
|
|
642
673
|
return;
|
|
643
674
|
}
|
|
644
675
|
// 清除自动吸附定时器(用户开始拖动)
|
|
@@ -1486,12 +1517,24 @@ class IconManager {
|
|
|
1486
1517
|
}
|
|
1487
1518
|
return;
|
|
1488
1519
|
}
|
|
1489
|
-
//
|
|
1520
|
+
// 检查是否是点击(即使没有开始拖动,也可能是点击)
|
|
1521
|
+
// 如果 touchStartTime 有值,说明至少有一个 mousedown/touchstart 事件
|
|
1522
|
+
const hasTouchStart = this.touchStartTime > 0;
|
|
1523
|
+
const isPotentialClick = hasTouchStart && !this.isDragging && !this.dragStarted && !this.hasMoved;
|
|
1524
|
+
// 如果已经停止且没有相关资源,但可能是点击,仍然需要处理
|
|
1490
1525
|
if (!this.isDragging && !this.dragStarted && !this.dragTimeoutId && !this.activeDetectionRafId) {
|
|
1491
|
-
|
|
1492
|
-
|
|
1526
|
+
// 如果是潜在的点击(SDK iframe 打开时的点击),继续处理;否则直接返回
|
|
1527
|
+
if (!isPotentialClick) {
|
|
1528
|
+
if (this.debug) {
|
|
1529
|
+
console.warn('[IconManager] stopDrag called but not dragging and not a click, ignoring');
|
|
1530
|
+
}
|
|
1531
|
+
// 清理可能残留的监听器
|
|
1532
|
+
if (this.stopDragHandler) {
|
|
1533
|
+
document.removeEventListener('mouseup', this.stopDragHandler);
|
|
1534
|
+
document.removeEventListener('touchend', this.stopDragHandler);
|
|
1535
|
+
}
|
|
1536
|
+
return;
|
|
1493
1537
|
}
|
|
1494
|
-
return;
|
|
1495
1538
|
}
|
|
1496
1539
|
this.isStoppingDrag = true;
|
|
1497
1540
|
// 在 iframe 上时,如果 mouseup 事件存在,从事件中获取鼠标位置并更新图标位置
|
|
@@ -22642,7 +22685,7 @@ class CustomerServiceSDK {
|
|
|
22642
22685
|
const initResult = {
|
|
22643
22686
|
deviceId,
|
|
22644
22687
|
iframeUrl,
|
|
22645
|
-
referrer: config
|
|
22688
|
+
referrer: this.getReferrer(config),
|
|
22646
22689
|
agent: config.agent,
|
|
22647
22690
|
timestamp: Date.now()
|
|
22648
22691
|
};
|
|
@@ -23051,6 +23094,12 @@ class CustomerServiceSDK {
|
|
|
23051
23094
|
}
|
|
23052
23095
|
return positionChanged || targetChanged;
|
|
23053
23096
|
}
|
|
23097
|
+
/**
|
|
23098
|
+
* 获取 referrer(统一获取逻辑)
|
|
23099
|
+
*/
|
|
23100
|
+
getReferrer(config) {
|
|
23101
|
+
return config.referrer || document.referrer || document.location.href;
|
|
23102
|
+
}
|
|
23054
23103
|
/**
|
|
23055
23104
|
* 构建iframe URL(带用户参数和设备ID)
|
|
23056
23105
|
*/
|
|
@@ -23068,7 +23117,7 @@ class CustomerServiceSDK {
|
|
|
23068
23117
|
url.searchParams.set('Authorization', config.token);
|
|
23069
23118
|
}
|
|
23070
23119
|
url.searchParams.set('DeviceSign', deviceId);
|
|
23071
|
-
url.searchParams.set('Referrer', config
|
|
23120
|
+
url.searchParams.set('Referrer', this.getReferrer(config));
|
|
23072
23121
|
return url.toString();
|
|
23073
23122
|
}
|
|
23074
23123
|
}
|