customer-chat-sdk 1.0.71 → 1.0.72
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
|
-
{"version":3,"file":"ScreenshotManager.d.ts","sourceRoot":"","sources":["../../src/core/ScreenshotManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ScreenshotManager.d.ts","sourceRoot":"","sources":["../../src/core/ScreenshotManager.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;IACtC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,aAAa,CAAA;IACxD,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,cAAc,GAAG,QAAQ,GAAG,YAAY,CAAA;IAC3F,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,aAAa,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;IACvC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;CACjB;AA4BD;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAyH;IACxI,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,iBAAiB,CAAe;IACxC,OAAO,CAAC,kBAAkB,CAAI;IAC9B,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,SAAS,CAAQ;IAGzB,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,oBAAoB,CAAqC;IAGjE,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,eAAe,CAA8B;IAGrD,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,qBAAqB,CAAY;IACzC,OAAO,CAAC,aAAa,CAAe;IAGpC,OAAO,CAAC,sBAAsB,CAAQ;IAGtC,OAAO,CAAC,eAAe,CAAqE;IAC5F,OAAO,CAAC,iBAAiB,CAAQ;IAGjC,OAAO,CAAC,cAAc,CAA8D;IAGpF,OAAO,CAAC,eAAe,CAAsB;IAG7C,OAAO,CAAC,eAAe,CAA8B;IAGrD,OAAO,CAAC,sBAAsB,CAAO;IAGrC,OAAO,CAAC,cAAc,CAA4B;IAGlD,OAAO,CAAC,eAAe,CAA4D;IAInF,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,oBAAoB,CAAyB;IAGrD,OAAO,CAAC,YAAY,CAAQ;IAG5B,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,2BAA2B,CAAI;IAGvC,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,sBAAsB,CAAwD;gBAE1E,aAAa,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,GAAE,iBAAsB,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAwDlH;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAsBnD;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAgE5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAcrC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA6F3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA8BzB;;OAEG;IACH,eAAe,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAmK9C;;OAEG;IACH,cAAc,IAAI,IAAI;IAqBtB;;OAEG;IACG,WAAW,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3D;;OAEG;YACW,cAAc;IAoP5B;;;;;;OAMG;YACW,yBAAyB;IA+KvC;;;;;;;;;;;;;;;;OAgBG;YACW,6BAA6B;IA4W3C;;;;;;;;;;;;;;;;;OAiBG;YACW,kCAAkC;IA6mBhD;;OAEG;YACW,sBAAsB;IA0BpC;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAuBhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;OAGG;YACW,qBAAqB;IAInC;;;OAGG;YACW,mBAAmB;IAIjC;;;OAGG;YACW,yBAAyB;IAIvC;;;OAGG;YACW,oBAAoB;IAIlC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+CxB;;OAEG;YACW,uBAAuB;IA2ErC;;OAEG;YACW,UAAU;IAmDxB;;OAEG;YACW,yBAAyB;IAiFvC;;OAEG;IACH,OAAO,CAAC,aAAa;IAqBrB;;OAEG;YACW,mBAAmB;IA8BjC;;;OAGG;YACW,qBAAqB;IAqCnC;;OAEG;YACW,YAAY;IAa1B;;;OAGG;YACW,sBAAsB;IAoEpC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;OAEG;IACH,OAAO,CAAC,YAAY;IAoWpB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkChC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAYjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,iBAAiB;IAiDzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;YACW,2BAA2B;IAoHzC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAoFxC;;;;;OAKG;IACH,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI;IACzD,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IACpD,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,GAAG,IAAI;IAClE,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IACvE,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAwD1E;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAO9B;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IA+D3D;;OAEG;IACH,OAAO,IAAI,IAAI;IA+Df;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAqCtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,QAAQ;;;;;;;;;CAWT"}
|
package/dist/customer-sdk.cjs.js
CHANGED
|
@@ -15638,7 +15638,10 @@ class ScreenshotManager {
|
|
|
15638
15638
|
// 对于 body 元素,已经使用了 window.innerWidth/innerHeight,所以直接使用压缩尺寸即可
|
|
15639
15639
|
const finalWidth = width;
|
|
15640
15640
|
const finalHeight = height;
|
|
15641
|
-
//
|
|
15641
|
+
// 判断是否使用代理
|
|
15642
|
+
const shouldUseProxy = this.options.useProxy && this.options.proxyUrl && this.options.proxyUrl.trim() !== '';
|
|
15643
|
+
// 处理跨域图片的函数(仅在配置了代理时使用)
|
|
15644
|
+
// 注意:这个函数只在 shouldUseProxy 为 true 时才会被传递给 modern-screenshot
|
|
15642
15645
|
const handleCrossOriginImage = async (url) => {
|
|
15643
15646
|
// 如果是 data URL 或 blob URL,直接返回
|
|
15644
15647
|
if (url.startsWith('data:') || url.startsWith('blob:')) {
|
|
@@ -15654,76 +15657,68 @@ class ScreenshotManager {
|
|
|
15654
15657
|
catch (e) {
|
|
15655
15658
|
// URL 解析失败,继续处理
|
|
15656
15659
|
}
|
|
15657
|
-
//
|
|
15658
|
-
//
|
|
15659
|
-
const
|
|
15660
|
-
if (
|
|
15661
|
-
|
|
15662
|
-
|
|
15663
|
-
if (cachedDataUrl) {
|
|
15664
|
-
if (!this.options.silentMode) {
|
|
15665
|
-
console.log(`📸 ✅ 使用内存缓存图片: ${url.substring(0, 50)}...`);
|
|
15666
|
-
}
|
|
15667
|
-
return cachedDataUrl;
|
|
15660
|
+
// 使用代理处理跨域图片
|
|
15661
|
+
// 检查内存缓存(优先使用缓存,带过期时间检查)
|
|
15662
|
+
const cachedDataUrl = this.getCachedImage(url);
|
|
15663
|
+
if (cachedDataUrl) {
|
|
15664
|
+
if (!this.options.silentMode) {
|
|
15665
|
+
console.log(`📸 ✅ 使用内存缓存图片: ${url.substring(0, 50)}...`);
|
|
15668
15666
|
}
|
|
15667
|
+
return cachedDataUrl;
|
|
15668
|
+
}
|
|
15669
|
+
try {
|
|
15670
|
+
// 构建代理请求参数
|
|
15671
|
+
const params = new URLSearchParams({
|
|
15672
|
+
url: url,
|
|
15673
|
+
maxWidth: String(this.options.maxWidth || 1600),
|
|
15674
|
+
maxHeight: String(this.options.maxHeight || 900),
|
|
15675
|
+
quality: String(Math.round((this.options.quality || 0.4) * 100)),
|
|
15676
|
+
format: this.options.outputFormat || 'webp'
|
|
15677
|
+
});
|
|
15678
|
+
let baseUrl = this.options.proxyUrl;
|
|
15679
|
+
baseUrl = baseUrl.replace(/[?&]$/, '');
|
|
15680
|
+
const proxyUrl = `${baseUrl}?${params.toString()}`;
|
|
15681
|
+
// 请求代理服务器(优化:添加超时控制和优先级)
|
|
15682
|
+
const controller = new AbortController();
|
|
15683
|
+
const timeoutId = setTimeout(() => controller.abort(), this.options.imageLoadTimeout);
|
|
15669
15684
|
try {
|
|
15670
|
-
|
|
15671
|
-
|
|
15672
|
-
|
|
15673
|
-
|
|
15674
|
-
|
|
15675
|
-
|
|
15676
|
-
|
|
15677
|
-
|
|
15678
|
-
|
|
15679
|
-
|
|
15680
|
-
|
|
15681
|
-
|
|
15682
|
-
|
|
15683
|
-
const timeoutId = setTimeout(() => controller.abort(), this.options.imageLoadTimeout);
|
|
15684
|
-
try {
|
|
15685
|
-
const fetchOptions = {
|
|
15686
|
-
method: 'GET',
|
|
15687
|
-
mode: 'cors',
|
|
15688
|
-
credentials: 'omit',
|
|
15689
|
-
headers: {
|
|
15690
|
-
'Accept': 'image/*'
|
|
15691
|
-
},
|
|
15692
|
-
cache: 'no-cache',
|
|
15693
|
-
signal: controller.signal
|
|
15694
|
-
};
|
|
15695
|
-
// 添加 fetch priority(如果支持)
|
|
15696
|
-
if ('priority' in fetchOptions) {
|
|
15697
|
-
fetchOptions.priority = this.options.fetchPriority;
|
|
15698
|
-
}
|
|
15699
|
-
const response = await fetch(proxyUrl, fetchOptions);
|
|
15700
|
-
clearTimeout(timeoutId);
|
|
15701
|
-
if (!response.ok) {
|
|
15702
|
-
throw new Error(`代理请求失败: ${response.status}`);
|
|
15703
|
-
}
|
|
15704
|
-
const blob = await response.blob();
|
|
15705
|
-
const dataUrl = await this.blobToDataUrl(blob);
|
|
15706
|
-
// 缓存结果(带时间戳,10分钟有效)
|
|
15707
|
-
this.setCachedImage(url, dataUrl);
|
|
15708
|
-
return dataUrl;
|
|
15685
|
+
const fetchOptions = {
|
|
15686
|
+
method: 'GET',
|
|
15687
|
+
mode: 'cors',
|
|
15688
|
+
credentials: 'omit',
|
|
15689
|
+
headers: {
|
|
15690
|
+
'Accept': 'image/*'
|
|
15691
|
+
},
|
|
15692
|
+
cache: 'no-cache',
|
|
15693
|
+
signal: controller.signal
|
|
15694
|
+
};
|
|
15695
|
+
// 添加 fetch priority(如果支持)
|
|
15696
|
+
if ('priority' in fetchOptions) {
|
|
15697
|
+
fetchOptions.priority = this.options.fetchPriority;
|
|
15709
15698
|
}
|
|
15710
|
-
|
|
15711
|
-
|
|
15712
|
-
|
|
15699
|
+
const response = await fetch(proxyUrl, fetchOptions);
|
|
15700
|
+
clearTimeout(timeoutId);
|
|
15701
|
+
if (!response.ok) {
|
|
15702
|
+
throw new Error(`代理请求失败: ${response.status}`);
|
|
15713
15703
|
}
|
|
15704
|
+
const blob = await response.blob();
|
|
15705
|
+
const dataUrl = await this.blobToDataUrl(blob);
|
|
15706
|
+
// 缓存结果(带时间戳,10分钟有效)
|
|
15707
|
+
this.setCachedImage(url, dataUrl);
|
|
15708
|
+
return dataUrl;
|
|
15714
15709
|
}
|
|
15715
|
-
catch (
|
|
15716
|
-
|
|
15717
|
-
|
|
15718
|
-
|
|
15719
|
-
|
|
15720
|
-
|
|
15710
|
+
catch (fetchError) {
|
|
15711
|
+
clearTimeout(timeoutId);
|
|
15712
|
+
throw fetchError;
|
|
15713
|
+
}
|
|
15714
|
+
}
|
|
15715
|
+
catch (error) {
|
|
15716
|
+
if (!this.options.silentMode) {
|
|
15717
|
+
console.warn(`📸 代理处理图片失败: ${url.substring(0, 100)}...`, error);
|
|
15721
15718
|
}
|
|
15719
|
+
// 失败时返回原 URL,让 modern-screenshot 自己处理
|
|
15720
|
+
return url;
|
|
15722
15721
|
}
|
|
15723
|
-
// 如果没有配置代理,直接返回原 URL,让 modern-screenshot 自己处理
|
|
15724
|
-
// 不再主动下载图片,避免阻塞和耗时过长
|
|
15725
|
-
// 如果 modern-screenshot 无法处理跨域图片,建议配置代理服务器
|
|
15726
|
-
return url;
|
|
15727
15722
|
};
|
|
15728
15723
|
// 检查元素是否可见且有尺寸
|
|
15729
15724
|
const rect = element.getBoundingClientRect();
|
|
@@ -15767,13 +15762,16 @@ class ScreenshotManager {
|
|
|
15767
15762
|
const contextOptions = {
|
|
15768
15763
|
workerNumber, // Worker 数量,> 0 启用 Worker 模式
|
|
15769
15764
|
quality: finalQuality, // 图片质量(0-1),已优化为更低的值以减少 base64 大小
|
|
15770
|
-
fetchFn
|
|
15771
|
-
|
|
15772
|
-
|
|
15773
|
-
|
|
15765
|
+
// 只有在配置了代理时才传递 fetchFn,否则让 modern-screenshot 自己处理(性能更好)
|
|
15766
|
+
...(shouldUseProxy ? {
|
|
15767
|
+
fetchFn: handleCrossOriginImage, // 使用代理服务器处理跨域图片
|
|
15768
|
+
fetch: {
|
|
15769
|
+
requestInit: {
|
|
15770
|
+
cache: 'no-cache',
|
|
15771
|
+
},
|
|
15772
|
+
bypassingCache: true,
|
|
15774
15773
|
},
|
|
15775
|
-
|
|
15776
|
-
},
|
|
15774
|
+
} : {}),
|
|
15777
15775
|
// 设置最大 canvas 尺寸,防止生成过大的 canvas(避免内存问题)
|
|
15778
15776
|
// 参考: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas#maximum_canvas_size
|
|
15779
15777
|
// 大多数浏览器限制为 16,777,216 像素(4096x4096),这里设置为更保守的值
|
package/dist/customer-sdk.esm.js
CHANGED
|
@@ -15634,7 +15634,10 @@ class ScreenshotManager {
|
|
|
15634
15634
|
// 对于 body 元素,已经使用了 window.innerWidth/innerHeight,所以直接使用压缩尺寸即可
|
|
15635
15635
|
const finalWidth = width;
|
|
15636
15636
|
const finalHeight = height;
|
|
15637
|
-
//
|
|
15637
|
+
// 判断是否使用代理
|
|
15638
|
+
const shouldUseProxy = this.options.useProxy && this.options.proxyUrl && this.options.proxyUrl.trim() !== '';
|
|
15639
|
+
// 处理跨域图片的函数(仅在配置了代理时使用)
|
|
15640
|
+
// 注意:这个函数只在 shouldUseProxy 为 true 时才会被传递给 modern-screenshot
|
|
15638
15641
|
const handleCrossOriginImage = async (url) => {
|
|
15639
15642
|
// 如果是 data URL 或 blob URL,直接返回
|
|
15640
15643
|
if (url.startsWith('data:') || url.startsWith('blob:')) {
|
|
@@ -15650,76 +15653,68 @@ class ScreenshotManager {
|
|
|
15650
15653
|
catch (e) {
|
|
15651
15654
|
// URL 解析失败,继续处理
|
|
15652
15655
|
}
|
|
15653
|
-
//
|
|
15654
|
-
//
|
|
15655
|
-
const
|
|
15656
|
-
if (
|
|
15657
|
-
|
|
15658
|
-
|
|
15659
|
-
if (cachedDataUrl) {
|
|
15660
|
-
if (!this.options.silentMode) {
|
|
15661
|
-
console.log(`📸 ✅ 使用内存缓存图片: ${url.substring(0, 50)}...`);
|
|
15662
|
-
}
|
|
15663
|
-
return cachedDataUrl;
|
|
15656
|
+
// 使用代理处理跨域图片
|
|
15657
|
+
// 检查内存缓存(优先使用缓存,带过期时间检查)
|
|
15658
|
+
const cachedDataUrl = this.getCachedImage(url);
|
|
15659
|
+
if (cachedDataUrl) {
|
|
15660
|
+
if (!this.options.silentMode) {
|
|
15661
|
+
console.log(`📸 ✅ 使用内存缓存图片: ${url.substring(0, 50)}...`);
|
|
15664
15662
|
}
|
|
15663
|
+
return cachedDataUrl;
|
|
15664
|
+
}
|
|
15665
|
+
try {
|
|
15666
|
+
// 构建代理请求参数
|
|
15667
|
+
const params = new URLSearchParams({
|
|
15668
|
+
url: url,
|
|
15669
|
+
maxWidth: String(this.options.maxWidth || 1600),
|
|
15670
|
+
maxHeight: String(this.options.maxHeight || 900),
|
|
15671
|
+
quality: String(Math.round((this.options.quality || 0.4) * 100)),
|
|
15672
|
+
format: this.options.outputFormat || 'webp'
|
|
15673
|
+
});
|
|
15674
|
+
let baseUrl = this.options.proxyUrl;
|
|
15675
|
+
baseUrl = baseUrl.replace(/[?&]$/, '');
|
|
15676
|
+
const proxyUrl = `${baseUrl}?${params.toString()}`;
|
|
15677
|
+
// 请求代理服务器(优化:添加超时控制和优先级)
|
|
15678
|
+
const controller = new AbortController();
|
|
15679
|
+
const timeoutId = setTimeout(() => controller.abort(), this.options.imageLoadTimeout);
|
|
15665
15680
|
try {
|
|
15666
|
-
|
|
15667
|
-
|
|
15668
|
-
|
|
15669
|
-
|
|
15670
|
-
|
|
15671
|
-
|
|
15672
|
-
|
|
15673
|
-
|
|
15674
|
-
|
|
15675
|
-
|
|
15676
|
-
|
|
15677
|
-
|
|
15678
|
-
|
|
15679
|
-
const timeoutId = setTimeout(() => controller.abort(), this.options.imageLoadTimeout);
|
|
15680
|
-
try {
|
|
15681
|
-
const fetchOptions = {
|
|
15682
|
-
method: 'GET',
|
|
15683
|
-
mode: 'cors',
|
|
15684
|
-
credentials: 'omit',
|
|
15685
|
-
headers: {
|
|
15686
|
-
'Accept': 'image/*'
|
|
15687
|
-
},
|
|
15688
|
-
cache: 'no-cache',
|
|
15689
|
-
signal: controller.signal
|
|
15690
|
-
};
|
|
15691
|
-
// 添加 fetch priority(如果支持)
|
|
15692
|
-
if ('priority' in fetchOptions) {
|
|
15693
|
-
fetchOptions.priority = this.options.fetchPriority;
|
|
15694
|
-
}
|
|
15695
|
-
const response = await fetch(proxyUrl, fetchOptions);
|
|
15696
|
-
clearTimeout(timeoutId);
|
|
15697
|
-
if (!response.ok) {
|
|
15698
|
-
throw new Error(`代理请求失败: ${response.status}`);
|
|
15699
|
-
}
|
|
15700
|
-
const blob = await response.blob();
|
|
15701
|
-
const dataUrl = await this.blobToDataUrl(blob);
|
|
15702
|
-
// 缓存结果(带时间戳,10分钟有效)
|
|
15703
|
-
this.setCachedImage(url, dataUrl);
|
|
15704
|
-
return dataUrl;
|
|
15681
|
+
const fetchOptions = {
|
|
15682
|
+
method: 'GET',
|
|
15683
|
+
mode: 'cors',
|
|
15684
|
+
credentials: 'omit',
|
|
15685
|
+
headers: {
|
|
15686
|
+
'Accept': 'image/*'
|
|
15687
|
+
},
|
|
15688
|
+
cache: 'no-cache',
|
|
15689
|
+
signal: controller.signal
|
|
15690
|
+
};
|
|
15691
|
+
// 添加 fetch priority(如果支持)
|
|
15692
|
+
if ('priority' in fetchOptions) {
|
|
15693
|
+
fetchOptions.priority = this.options.fetchPriority;
|
|
15705
15694
|
}
|
|
15706
|
-
|
|
15707
|
-
|
|
15708
|
-
|
|
15695
|
+
const response = await fetch(proxyUrl, fetchOptions);
|
|
15696
|
+
clearTimeout(timeoutId);
|
|
15697
|
+
if (!response.ok) {
|
|
15698
|
+
throw new Error(`代理请求失败: ${response.status}`);
|
|
15709
15699
|
}
|
|
15700
|
+
const blob = await response.blob();
|
|
15701
|
+
const dataUrl = await this.blobToDataUrl(blob);
|
|
15702
|
+
// 缓存结果(带时间戳,10分钟有效)
|
|
15703
|
+
this.setCachedImage(url, dataUrl);
|
|
15704
|
+
return dataUrl;
|
|
15710
15705
|
}
|
|
15711
|
-
catch (
|
|
15712
|
-
|
|
15713
|
-
|
|
15714
|
-
|
|
15715
|
-
|
|
15716
|
-
|
|
15706
|
+
catch (fetchError) {
|
|
15707
|
+
clearTimeout(timeoutId);
|
|
15708
|
+
throw fetchError;
|
|
15709
|
+
}
|
|
15710
|
+
}
|
|
15711
|
+
catch (error) {
|
|
15712
|
+
if (!this.options.silentMode) {
|
|
15713
|
+
console.warn(`📸 代理处理图片失败: ${url.substring(0, 100)}...`, error);
|
|
15717
15714
|
}
|
|
15715
|
+
// 失败时返回原 URL,让 modern-screenshot 自己处理
|
|
15716
|
+
return url;
|
|
15718
15717
|
}
|
|
15719
|
-
// 如果没有配置代理,直接返回原 URL,让 modern-screenshot 自己处理
|
|
15720
|
-
// 不再主动下载图片,避免阻塞和耗时过长
|
|
15721
|
-
// 如果 modern-screenshot 无法处理跨域图片,建议配置代理服务器
|
|
15722
|
-
return url;
|
|
15723
15718
|
};
|
|
15724
15719
|
// 检查元素是否可见且有尺寸
|
|
15725
15720
|
const rect = element.getBoundingClientRect();
|
|
@@ -15763,13 +15758,16 @@ class ScreenshotManager {
|
|
|
15763
15758
|
const contextOptions = {
|
|
15764
15759
|
workerNumber, // Worker 数量,> 0 启用 Worker 模式
|
|
15765
15760
|
quality: finalQuality, // 图片质量(0-1),已优化为更低的值以减少 base64 大小
|
|
15766
|
-
fetchFn
|
|
15767
|
-
|
|
15768
|
-
|
|
15769
|
-
|
|
15761
|
+
// 只有在配置了代理时才传递 fetchFn,否则让 modern-screenshot 自己处理(性能更好)
|
|
15762
|
+
...(shouldUseProxy ? {
|
|
15763
|
+
fetchFn: handleCrossOriginImage, // 使用代理服务器处理跨域图片
|
|
15764
|
+
fetch: {
|
|
15765
|
+
requestInit: {
|
|
15766
|
+
cache: 'no-cache',
|
|
15767
|
+
},
|
|
15768
|
+
bypassingCache: true,
|
|
15770
15769
|
},
|
|
15771
|
-
|
|
15772
|
-
},
|
|
15770
|
+
} : {}),
|
|
15773
15771
|
// 设置最大 canvas 尺寸,防止生成过大的 canvas(避免内存问题)
|
|
15774
15772
|
// 参考: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas#maximum_canvas_size
|
|
15775
15773
|
// 大多数浏览器限制为 16,777,216 像素(4096x4096),这里设置为更保守的值
|