Files
谢宇宁andClaude Opus 5.5 0fbdba5ccf Initial commit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 11:47:47 +07:00

68 lines
2.0 KiB
JavaScript

(function () {
var buttons = document.querySelectorAll("[data-share-page]");
if (!buttons.length) return;
var RESET_MS = 2000;
function fallbackCopy(text) {
var ta = document.createElement("textarea");
ta.value = text;
ta.setAttribute("readonly", "");
ta.style.cssText = "position:fixed;top:0;left:0;width:1px;height:1px;padding:0;border:0;opacity:0;";
document.body.appendChild(ta);
ta.focus();
ta.select();
ta.setSelectionRange(0, ta.value.length);
var ok = false;
try {
ok = document.execCommand("copy");
} catch (_) {
ok = false;
}
document.body.removeChild(ta);
return ok;
}
function copyText(text) {
if (navigator.clipboard && navigator.clipboard.writeText) {
return navigator.clipboard.writeText(text).catch(function () {
fallbackCopy(text);
});
}
fallbackCopy(text);
return Promise.resolve();
}
function showCopied(btn, label, original) {
if (label) {
label.textContent = "链接已复制";
label.classList.add("is-copied");
}
btn.classList.add("is-share-copied");
btn.setAttribute("aria-label", "链接已复制");
if (typeof window.showToast === "function") {
window.showToast("链接已复制", "success");
}
if (btn._shareResetTimer) window.clearTimeout(btn._shareResetTimer);
btn._shareResetTimer = window.setTimeout(function () {
if (label) {
label.textContent = original;
label.classList.remove("is-copied");
}
btn.classList.remove("is-share-copied");
btn.setAttribute("aria-label", original || "分享");
btn._shareResetTimer = 0;
}, RESET_MS);
}
Array.prototype.forEach.call(buttons, function (btn) {
var label = btn.querySelector("[data-share-page-label]");
var original = (label && label.textContent) || btn.getAttribute("aria-label") || "分享";
btn.addEventListener("click", function (event) {
event.preventDefault();
showCopied(btn, label, original);
copyText(window.location.href);
});
});
})();