From 5728e299a1a7203e2409afa55992ad77c79e03c2 Mon Sep 17 00:00:00 2001 From: Karlcarlo Date: Mon, 7 Sep 2026 20:44:01 +0800 Subject: [PATCH] =?UTF-8?q?wx-h5-demo:=20=E5=A4=8D=E5=88=B6=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E7=AE=80=E5=8C=96=E4=B8=BA=E9=9A=90=E8=97=8Ftextarea+?= =?UTF-8?q?execCommand,=20=E5=8E=BB=E6=8E=89Clipboard=20API=E4=B8=8E?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=BC=B9=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 50 ++++++++++++-------------------------------------- 1 file changed, 12 insertions(+), 38 deletions(-) diff --git a/index.html b/index.html index 569836a..23b037d 100644 --- a/index.html +++ b/index.html @@ -135,39 +135,7 @@ el('dbgClose').addEventListener('click', function () { el('dbgPanel').classList.remove('open'); }); el('dbgClear').addEventListener('click', function () { el('dbgLog').innerHTML = ''; dbgCount = 0; el('dbgCount').textContent = ''; }); - // 复制日志:拼纯文本(时间 + 内容),Clipboard API 优先,失败/不可用则降级 execCommand - function copyWithFallback(text) { - try { - var ta = document.createElement('textarea'); - ta.value = text; ta.style.position = 'fixed'; ta.style.opacity = '0'; - document.body.appendChild(ta); ta.select(); - var ok2 = document.execCommand('copy'); - document.body.removeChild(ta); - return !!ok2; - } catch (e) { - return false; - } - } - // 终极大兜底:两种 API 都失败时,弹出一个可全选/长按的文本区让用户手动复制 - function manualCopy(text) { - dbg('自动复制不可用,弹出文本区请长按/全选复制 ↓', 'warn'); - var box = el('dbgManual'); - if (!box) { - box = document.createElement('div'); - box.id = 'dbgManual'; - box.style.cssText = 'position:fixed;left:10px;right:10px;top:10px;z-index:300;background:#fff;border:2px solid #F4593C;border-radius:12px;padding:10px;box-shadow:0 6px 20px rgba(0,0,0,.3);max-height:70vh;display:flex;flex-direction:column'; - box.innerHTML = '
' + - '手动复制日志' + - '
' + - '' + - '
提示:微信里长按文本 → 全选 → 复制。
'; - document.body.appendChild(box); - el('dbgManualClose').addEventListener('click', function () { box.parentNode.removeChild(box); }); - var t = el('dbgManualText'); - setTimeout(function () { t.focus(); t.select(); }, 300); - } - } + // 复制日志:隐藏 textarea + execCommand('copy'),微信 webview 通用做法 el('dbgCopy').addEventListener('click', function () { var text = ''; var lns = el('dbgLog').querySelectorAll('.ln'); @@ -177,11 +145,17 @@ } text = '[wx-h5-demo 调试日志 v' + VER + ']\n' + text; function ok() { dbg('已复制 ' + lns.length + ' 条日志到剪贴板', 'ok'); } - function fallback() { if (copyWithFallback(text)) ok(); else manualCopy(text); } - if (navigator.clipboard && navigator.clipboard.writeText) { - navigator.clipboard.writeText(text).then(ok, function () { fallback(); }); - } else { - fallback(); + try { + var ta = document.createElement('textarea'); + ta.value = text; + ta.style.cssText = 'position:fixed;top:0;left:0;opacity:0;height:1px;width:1px;overflow:hidden'; + document.body.appendChild(ta); + ta.select(); + var did = document.execCommand('copy'); + document.body.removeChild(ta); + if (did) ok(); else dbgErr('复制失败(execCommand 返回 false)'); + } catch (e) { + dbgErr('复制失败: ' + (e && e.message ? e.message : e)); } });