[fix] error handler for codeCopyBtn (#419)
This commit is contained in:
parent
47b10e1105
commit
373948c28e
|
@ -1,41 +1,32 @@
|
|||
window.codeElements.forEach(code => {
|
||||
// copy btn
|
||||
window.codeElements.forEach((codeElement) => {
|
||||
// 创建复制按钮
|
||||
const codeCopyBtn = document.createElement('div');
|
||||
codeCopyBtn.classList.add('copy-btn');
|
||||
codeCopyBtn.innerHTML = ctx.copycode.default_text;
|
||||
code.appendChild(codeCopyBtn);
|
||||
codeCopyBtn.addEventListener('click', async () => {
|
||||
const currentCodeElement = code.children[0]?.innerText;
|
||||
await copyCode(currentCodeElement);
|
||||
codeCopyBtn.innerHTML = ctx.copycode.success_text;
|
||||
codeCopyBtn.classList.add('success');
|
||||
hud.toast(ctx.copycode.toast, 2500);
|
||||
setTimeout(() => {
|
||||
codeCopyBtn.innerHTML = ctx.copycode.default_text;
|
||||
codeCopyBtn.classList.remove('success');
|
||||
},3000);
|
||||
})
|
||||
})
|
||||
codeCopyBtn.className = 'copy-btn';
|
||||
codeCopyBtn.textContent = ctx.copycode.default_text;
|
||||
codeElement.appendChild(codeCopyBtn);
|
||||
|
||||
async function copyCode(currentCode) {
|
||||
// 添加点击事件监听
|
||||
codeCopyBtn.addEventListener('click', async () => {
|
||||
const codeToCopy = codeElement.querySelector('code')?.textContent || '';
|
||||
if (navigator.clipboard) {
|
||||
try {
|
||||
await navigator.clipboard.writeText(currentCode);
|
||||
await navigator.clipboard.writeText(codeToCopy);
|
||||
codeCopyBtn.textContent = ctx.copycode.success_text;
|
||||
codeCopyBtn.classList.add('success');
|
||||
hud.toast(ctx.copycode.toast, 2500);
|
||||
} catch (error) {
|
||||
// 未获得用户许可
|
||||
codeCopyBtn.innerText = '未获得用户许可';
|
||||
codeCopyBtn.textContent = '未获得用户许可';
|
||||
codeCopyBtn.classList.add('warning');
|
||||
setTimeout(() => {
|
||||
codeCopyBtn.innerText = ctx.copycode.default_text;
|
||||
codeCopyBtn.classList.remove('warning');
|
||||
},3000);
|
||||
}
|
||||
} else {
|
||||
codeCopyBtn.innerText = '当前浏览器不支持此api';
|
||||
codeCopyBtn.textContent = '浏览器不支持/非HTTPS';
|
||||
codeCopyBtn.classList.add('warning');
|
||||
}
|
||||
|
||||
// 3秒后恢复默认文本
|
||||
setTimeout(() => {
|
||||
codeCopyBtn.innerText = ctx.copycode.default_text;
|
||||
codeCopyBtn.classList.remove('warning');
|
||||
codeCopyBtn.textContent = ctx.copycode.default_text;
|
||||
codeCopyBtn.classList.remove('success', 'warning');
|
||||
}, 3000);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue