From 1d3d9358990bba08e0a654b7c17f16ed4fd443a6 Mon Sep 17 00:00:00 2001 From: augushong Date: Sun, 3 May 2026 21:49:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dphone-image=E6=88=AA?= =?UTF-8?q?=E5=9B=BE=E5=BE=AA=E7=8E=AFidx=E5=8F=82=E6=95=B0=E4=BC=A0?= =?UTF-8?q?=E9=80=92bug=E5=AF=BC=E8=87=B4=E6=97=A0=E9=99=90=E5=BE=AA?= =?UTF-8?q?=E7=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit capturePageViaHtml2Canvas函数将idx作为参数传入,.then回调中idx++只修改参数副本而非闭包变量, 导致runCaptureLoop中idx永远为0,截图循环无限重复处理第一页。 改为传递onDone回调函数,在回调中正确修改闭包变量idx。 --- public/static/js/phone-image.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/public/static/js/phone-image.js b/public/static/js/phone-image.js index 66e07a4..fa49425 100644 --- a/public/static/js/phone-image.js +++ b/public/static/js/phone-image.js @@ -955,7 +955,7 @@ var PhoneImageEngine = (function () { captureNext(); }).catch(function () { // 加载失败,回退到html2canvas - capturePageViaHtml2Canvas($elem, $staging, opts, results, idx, total, deferred, captureNext); + capturePageViaHtml2Canvas($elem, $staging, opts, results, deferred, function () { idx++; captureNext(); }); }); return; } else { @@ -968,7 +968,7 @@ var PhoneImageEngine = (function () { } } - capturePageViaHtml2Canvas($elem, $staging, opts, results, idx, total, deferred, captureNext); + capturePageViaHtml2Canvas($elem, $staging, opts, results, deferred, function () { idx++; captureNext(); }); } captureNext(); @@ -977,7 +977,7 @@ var PhoneImageEngine = (function () { /** * 用html2canvas截图单页 */ - function capturePageViaHtml2Canvas($elem, $staging, opts, results, idx, total, deferred, captureNext) { + function capturePageViaHtml2Canvas($elem, $staging, opts, results, deferred, onDone) { html2canvas($elem[0], { scale: opts.scale, useCORS: true, @@ -991,11 +991,10 @@ var PhoneImageEngine = (function () { } else { results.push(canvas.toDataURL('image/jpeg', opts.quality)); } - idx++; - captureNext(); + onDone(); }).catch(function (err) { $staging.css({ visibility: 'hidden' }); - deferred.reject('截图失败(第' + (idx + 1) + '页): ' + err); + deferred.reject('截图失败: ' + err); }); }