diff --git a/public/js/admin.js b/public/js/admin.js index 3228712..849c242 100644 --- a/public/js/admin.js +++ b/public/js/admin.js @@ -615,6 +615,27 @@ var btns = document.querySelectorAll('[data-action="copy-link"][data-href]'); if(!btns || btns.length === 0){return;} + function markCopied(btn, ok) { + try { + var orig = btn.getAttribute('data-orig-text'); + if (!orig) { + orig = String(btn.textContent || ''); + btn.setAttribute('data-orig-text', orig); + } + + var nextText = ok ? '已复制' : '复制失败'; + btn.textContent = nextText; + btn.disabled = true; + + setTimeout(function(){ + try { + btn.textContent = orig; + btn.disabled = false; + } catch (e) {} + }, 1200); + } catch (e) {} + } + btns.forEach(function(btn){ btn.addEventListener('click', function(){ var href = btn.getAttribute('data-href') || ''; @@ -622,11 +643,14 @@ var abs = absoluteUrl(href); copyToClipboard(abs).then(function(){ + markCopied(btn, true); + if (toastSuccess('已复制' + label + '链接')) { return; } try { window.alert('已复制' + label + '链接'); } catch (e) {} }).catch(function(){ + markCopied(btn, false); try { window.alert('复制失败,请手动复制' + label + '链接'); } catch (e) {} }); }); diff --git a/tests/Feature/AdminJsCopyLinkButtonsShouldHaveTemporaryFeedbackLogicTest.php b/tests/Feature/AdminJsCopyLinkButtonsShouldHaveTemporaryFeedbackLogicTest.php new file mode 100644 index 0000000..f1b32d7 --- /dev/null +++ b/tests/Feature/AdminJsCopyLinkButtonsShouldHaveTemporaryFeedbackLogicTest.php @@ -0,0 +1,24 @@ +assertIsString($js); + + // 关键口径:复制后按钮短暂变为“已复制/复制失败”,并 disable + $this->assertStringContainsString('markCopied', $js); + $this->assertStringContainsString("'已复制'", $js); + $this->assertStringContainsString("'复制失败'", $js); + $this->assertStringContainsString('btn.disabled = true', $js); + } +}