customer-chat-sdk 1.0.36 → 1.0.37
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":"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"}
|
package/dist/customer-sdk.cjs.js
CHANGED
|
@@ -7172,24 +7172,35 @@ class ScreenshotManager {
|
|
|
7172
7172
|
width: finalWidth,
|
|
7173
7173
|
height: finalHeight,
|
|
7174
7174
|
// 关键配置:确保样式正确渲染
|
|
7175
|
-
foreignObjectRendering
|
|
7176
|
-
|
|
7175
|
+
// 注意:foreignObjectRendering 可能导致样式问题,改为 true 或移除此选项
|
|
7176
|
+
// foreignObjectRendering: false, // 移除或设为 true,让 html2canvas 自动选择最佳渲染方式
|
|
7177
|
+
onclone: (clonedDoc, _clonedElement) => {
|
|
7177
7178
|
// 在克隆的文档中,确保所有样式都正确应用
|
|
7178
|
-
// html2canvas
|
|
7179
|
-
//
|
|
7180
|
-
|
|
7181
|
-
const
|
|
7182
|
-
|
|
7183
|
-
|
|
7184
|
-
|
|
7185
|
-
|
|
7186
|
-
|
|
7179
|
+
// html2canvas 会自动处理样式,但我们可以确保样式表被正确加载
|
|
7180
|
+
// 确保克隆文档的样式表链接正确
|
|
7181
|
+
const originalLinks = document.querySelectorAll('link[rel="stylesheet"]');
|
|
7182
|
+
const clonedLinks = clonedDoc.querySelectorAll('link[rel="stylesheet"]');
|
|
7183
|
+
// 如果克隆文档缺少样式表链接,从原始文档复制
|
|
7184
|
+
if (clonedLinks.length < originalLinks.length) {
|
|
7185
|
+
originalLinks.forEach((link) => {
|
|
7186
|
+
const href = link.getAttribute('href');
|
|
7187
|
+
if (href && !clonedDoc.querySelector(`link[href="${href}"]`)) {
|
|
7188
|
+
const newLink = clonedDoc.createElement('link');
|
|
7189
|
+
newLink.rel = 'stylesheet';
|
|
7190
|
+
newLink.href = href;
|
|
7191
|
+
clonedDoc.head.appendChild(newLink);
|
|
7187
7192
|
}
|
|
7193
|
+
});
|
|
7194
|
+
}
|
|
7195
|
+
// 确保内联样式被正确复制
|
|
7196
|
+
const originalStyle = document.querySelector('style');
|
|
7197
|
+
if (originalStyle && originalStyle.textContent) {
|
|
7198
|
+
const clonedStyle = clonedDoc.createElement('style');
|
|
7199
|
+
clonedStyle.textContent = originalStyle.textContent;
|
|
7200
|
+
if (!clonedDoc.head.querySelector('style')) {
|
|
7201
|
+
clonedDoc.head.appendChild(clonedStyle);
|
|
7188
7202
|
}
|
|
7189
|
-
|
|
7190
|
-
// 跨域样式表无法访问,html2canvas 会尝试其他方式
|
|
7191
|
-
}
|
|
7192
|
-
});
|
|
7203
|
+
}
|
|
7193
7204
|
},
|
|
7194
7205
|
// 性能优化
|
|
7195
7206
|
removeContainer: true, // 截图后移除临时容器
|
|
@@ -7207,7 +7218,13 @@ class ScreenshotManager {
|
|
|
7207
7218
|
// html2canvas 不支持直接的 proxy 选项,需要通过 onclone 钩子处理图片
|
|
7208
7219
|
// 如果配置了代理服务器,在克隆时替换图片 URL
|
|
7209
7220
|
if (this.options.useProxy && this.options.proxyUrl && this.options.proxyUrl.trim() !== '') {
|
|
7210
|
-
|
|
7221
|
+
// 保存原始的 onclone
|
|
7222
|
+
const originalOnclone = options.onclone;
|
|
7223
|
+
options.onclone = (clonedDoc, clonedElement) => {
|
|
7224
|
+
// 先执行原始的样式处理逻辑
|
|
7225
|
+
if (originalOnclone) {
|
|
7226
|
+
originalOnclone(clonedDoc, clonedElement);
|
|
7227
|
+
}
|
|
7211
7228
|
// 在克隆的文档中,替换所有跨域图片的 src
|
|
7212
7229
|
const images = clonedDoc.querySelectorAll('img');
|
|
7213
7230
|
images.forEach((img) => {
|
|
@@ -8318,6 +8335,7 @@ class ScreenshotManager {
|
|
|
8318
8335
|
}
|
|
8319
8336
|
/**
|
|
8320
8337
|
* 等待所有样式表加载完成(html2canvas 专用)
|
|
8338
|
+
* 增强版:确保所有样式表都完全加载
|
|
8321
8339
|
*/
|
|
8322
8340
|
async waitForAllStylesLoaded() {
|
|
8323
8341
|
const styleSheets = Array.from(document.styleSheets);
|
|
@@ -8327,14 +8345,28 @@ class ScreenshotManager {
|
|
|
8327
8345
|
try {
|
|
8328
8346
|
// 尝试访问样式表规则,如果成功说明样式表已加载
|
|
8329
8347
|
const rules = sheet.cssRules;
|
|
8330
|
-
if (rules) {
|
|
8348
|
+
if (rules && rules.length > 0) {
|
|
8349
|
+
// 样式表已加载且有规则
|
|
8350
|
+
resolve();
|
|
8351
|
+
}
|
|
8352
|
+
else if (rules) {
|
|
8353
|
+
// 样式表已加载但可能没有规则(空样式表)
|
|
8331
8354
|
resolve();
|
|
8332
8355
|
}
|
|
8333
8356
|
else {
|
|
8334
8357
|
// 等待样式表加载
|
|
8358
|
+
let checkCount = 0;
|
|
8359
|
+
const maxChecks = 100; // 最多检查100次(5秒)
|
|
8335
8360
|
const checkInterval = setInterval(() => {
|
|
8361
|
+
checkCount++;
|
|
8336
8362
|
try {
|
|
8337
|
-
|
|
8363
|
+
const currentRules = sheet.cssRules;
|
|
8364
|
+
if (currentRules) {
|
|
8365
|
+
clearInterval(checkInterval);
|
|
8366
|
+
resolve();
|
|
8367
|
+
}
|
|
8368
|
+
else if (checkCount >= maxChecks) {
|
|
8369
|
+
// 超时,可能样式表无法访问
|
|
8338
8370
|
clearInterval(checkInterval);
|
|
8339
8371
|
resolve();
|
|
8340
8372
|
}
|
|
@@ -8359,8 +8391,16 @@ class ScreenshotManager {
|
|
|
8359
8391
|
}));
|
|
8360
8392
|
});
|
|
8361
8393
|
await Promise.all(promises);
|
|
8362
|
-
//
|
|
8363
|
-
await new Promise(resolve => setTimeout(resolve,
|
|
8394
|
+
// 额外等待,确保样式应用(增加到300ms,确保样式完全应用)
|
|
8395
|
+
await new Promise(resolve => setTimeout(resolve, 300));
|
|
8396
|
+
// 再次使用 requestAnimationFrame 确保渲染完成
|
|
8397
|
+
await new Promise(resolve => {
|
|
8398
|
+
requestAnimationFrame(() => {
|
|
8399
|
+
requestAnimationFrame(() => {
|
|
8400
|
+
setTimeout(() => resolve(), 100);
|
|
8401
|
+
});
|
|
8402
|
+
});
|
|
8403
|
+
});
|
|
8364
8404
|
}
|
|
8365
8405
|
/**
|
|
8366
8406
|
* 计算压缩后的尺寸
|
package/dist/customer-sdk.esm.js
CHANGED
|
@@ -7168,24 +7168,35 @@ class ScreenshotManager {
|
|
|
7168
7168
|
width: finalWidth,
|
|
7169
7169
|
height: finalHeight,
|
|
7170
7170
|
// 关键配置:确保样式正确渲染
|
|
7171
|
-
foreignObjectRendering
|
|
7172
|
-
|
|
7171
|
+
// 注意:foreignObjectRendering 可能导致样式问题,改为 true 或移除此选项
|
|
7172
|
+
// foreignObjectRendering: false, // 移除或设为 true,让 html2canvas 自动选择最佳渲染方式
|
|
7173
|
+
onclone: (clonedDoc, _clonedElement) => {
|
|
7173
7174
|
// 在克隆的文档中,确保所有样式都正确应用
|
|
7174
|
-
// html2canvas
|
|
7175
|
-
//
|
|
7176
|
-
|
|
7177
|
-
const
|
|
7178
|
-
|
|
7179
|
-
|
|
7180
|
-
|
|
7181
|
-
|
|
7182
|
-
|
|
7175
|
+
// html2canvas 会自动处理样式,但我们可以确保样式表被正确加载
|
|
7176
|
+
// 确保克隆文档的样式表链接正确
|
|
7177
|
+
const originalLinks = document.querySelectorAll('link[rel="stylesheet"]');
|
|
7178
|
+
const clonedLinks = clonedDoc.querySelectorAll('link[rel="stylesheet"]');
|
|
7179
|
+
// 如果克隆文档缺少样式表链接,从原始文档复制
|
|
7180
|
+
if (clonedLinks.length < originalLinks.length) {
|
|
7181
|
+
originalLinks.forEach((link) => {
|
|
7182
|
+
const href = link.getAttribute('href');
|
|
7183
|
+
if (href && !clonedDoc.querySelector(`link[href="${href}"]`)) {
|
|
7184
|
+
const newLink = clonedDoc.createElement('link');
|
|
7185
|
+
newLink.rel = 'stylesheet';
|
|
7186
|
+
newLink.href = href;
|
|
7187
|
+
clonedDoc.head.appendChild(newLink);
|
|
7183
7188
|
}
|
|
7189
|
+
});
|
|
7190
|
+
}
|
|
7191
|
+
// 确保内联样式被正确复制
|
|
7192
|
+
const originalStyle = document.querySelector('style');
|
|
7193
|
+
if (originalStyle && originalStyle.textContent) {
|
|
7194
|
+
const clonedStyle = clonedDoc.createElement('style');
|
|
7195
|
+
clonedStyle.textContent = originalStyle.textContent;
|
|
7196
|
+
if (!clonedDoc.head.querySelector('style')) {
|
|
7197
|
+
clonedDoc.head.appendChild(clonedStyle);
|
|
7184
7198
|
}
|
|
7185
|
-
|
|
7186
|
-
// 跨域样式表无法访问,html2canvas 会尝试其他方式
|
|
7187
|
-
}
|
|
7188
|
-
});
|
|
7199
|
+
}
|
|
7189
7200
|
},
|
|
7190
7201
|
// 性能优化
|
|
7191
7202
|
removeContainer: true, // 截图后移除临时容器
|
|
@@ -7203,7 +7214,13 @@ class ScreenshotManager {
|
|
|
7203
7214
|
// html2canvas 不支持直接的 proxy 选项,需要通过 onclone 钩子处理图片
|
|
7204
7215
|
// 如果配置了代理服务器,在克隆时替换图片 URL
|
|
7205
7216
|
if (this.options.useProxy && this.options.proxyUrl && this.options.proxyUrl.trim() !== '') {
|
|
7206
|
-
|
|
7217
|
+
// 保存原始的 onclone
|
|
7218
|
+
const originalOnclone = options.onclone;
|
|
7219
|
+
options.onclone = (clonedDoc, clonedElement) => {
|
|
7220
|
+
// 先执行原始的样式处理逻辑
|
|
7221
|
+
if (originalOnclone) {
|
|
7222
|
+
originalOnclone(clonedDoc, clonedElement);
|
|
7223
|
+
}
|
|
7207
7224
|
// 在克隆的文档中,替换所有跨域图片的 src
|
|
7208
7225
|
const images = clonedDoc.querySelectorAll('img');
|
|
7209
7226
|
images.forEach((img) => {
|
|
@@ -8314,6 +8331,7 @@ class ScreenshotManager {
|
|
|
8314
8331
|
}
|
|
8315
8332
|
/**
|
|
8316
8333
|
* 等待所有样式表加载完成(html2canvas 专用)
|
|
8334
|
+
* 增强版:确保所有样式表都完全加载
|
|
8317
8335
|
*/
|
|
8318
8336
|
async waitForAllStylesLoaded() {
|
|
8319
8337
|
const styleSheets = Array.from(document.styleSheets);
|
|
@@ -8323,14 +8341,28 @@ class ScreenshotManager {
|
|
|
8323
8341
|
try {
|
|
8324
8342
|
// 尝试访问样式表规则,如果成功说明样式表已加载
|
|
8325
8343
|
const rules = sheet.cssRules;
|
|
8326
|
-
if (rules) {
|
|
8344
|
+
if (rules && rules.length > 0) {
|
|
8345
|
+
// 样式表已加载且有规则
|
|
8346
|
+
resolve();
|
|
8347
|
+
}
|
|
8348
|
+
else if (rules) {
|
|
8349
|
+
// 样式表已加载但可能没有规则(空样式表)
|
|
8327
8350
|
resolve();
|
|
8328
8351
|
}
|
|
8329
8352
|
else {
|
|
8330
8353
|
// 等待样式表加载
|
|
8354
|
+
let checkCount = 0;
|
|
8355
|
+
const maxChecks = 100; // 最多检查100次(5秒)
|
|
8331
8356
|
const checkInterval = setInterval(() => {
|
|
8357
|
+
checkCount++;
|
|
8332
8358
|
try {
|
|
8333
|
-
|
|
8359
|
+
const currentRules = sheet.cssRules;
|
|
8360
|
+
if (currentRules) {
|
|
8361
|
+
clearInterval(checkInterval);
|
|
8362
|
+
resolve();
|
|
8363
|
+
}
|
|
8364
|
+
else if (checkCount >= maxChecks) {
|
|
8365
|
+
// 超时,可能样式表无法访问
|
|
8334
8366
|
clearInterval(checkInterval);
|
|
8335
8367
|
resolve();
|
|
8336
8368
|
}
|
|
@@ -8355,8 +8387,16 @@ class ScreenshotManager {
|
|
|
8355
8387
|
}));
|
|
8356
8388
|
});
|
|
8357
8389
|
await Promise.all(promises);
|
|
8358
|
-
//
|
|
8359
|
-
await new Promise(resolve => setTimeout(resolve,
|
|
8390
|
+
// 额外等待,确保样式应用(增加到300ms,确保样式完全应用)
|
|
8391
|
+
await new Promise(resolve => setTimeout(resolve, 300));
|
|
8392
|
+
// 再次使用 requestAnimationFrame 确保渲染完成
|
|
8393
|
+
await new Promise(resolve => {
|
|
8394
|
+
requestAnimationFrame(() => {
|
|
8395
|
+
requestAnimationFrame(() => {
|
|
8396
|
+
setTimeout(() => resolve(), 100);
|
|
8397
|
+
});
|
|
8398
|
+
});
|
|
8399
|
+
});
|
|
8360
8400
|
}
|
|
8361
8401
|
/**
|
|
8362
8402
|
* 计算压缩后的尺寸
|