diff --git a/README.md b/README.md index 75f2752..75284bc 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,7 @@ docker run -d -p :80 -v $PWD:/app --name avhub levywang/avhub: ``` --- + ### **Configuration Instructions** If you deploy the project on a server within China, the source site `missav` is blocked, so you need to configure a proxy server in `config.yaml`. Edit the `/data/config.yaml` file and modify it as follows: diff --git a/web/script.js b/web/script.js index 65d3e24..f41af23 100644 --- a/web/script.js +++ b/web/script.js @@ -1329,37 +1329,76 @@ async function loadCollections() { function copyToClipboard(text) { const notification = document.getElementById('notification'); - navigator.clipboard.writeText(text).then(() => { - // 成功复制通知 - notification.innerHTML = ` + // 显示通知的辅助函数 + const showNotification = (success) => { + notification.innerHTML = success ? ` ${translations[currentLang].copySuccess} - `; - notification.style.setProperty('background', '#1bb76e'); - notification.classList.add('show'); - - setTimeout(() => { - notification.classList.remove('show'); - notification.style.background = ''; // 重置背景色为默认值 - }, 3000); - }).catch(err => { - // 复制失败通知 - notification.innerHTML = ` + ` : ` ${translations[currentLang].copyError} `; - notification.style.background = '#dc2626'; + + notification.style.background = success ? '#1bb76e' : '#dc2626'; notification.classList.add('show'); setTimeout(() => { notification.classList.remove('show'); notification.style.background = ''; }, 3000); - }); + }; + + // 尝试使用 Clipboard API + if (navigator.clipboard && window.isSecureContext) { + navigator.clipboard.writeText(text) + .then(() => showNotification(true)) + .catch(() => { + // 如果 Clipboard API 失败,回退到 execCommand 方法 + fallbackCopyToClipboard(text); + }); + } else { + // 在非安全上下文中直接使用 execCommand 方法 + fallbackCopyToClipboard(text); + } + + // execCommand 复制方法 + function fallbackCopyToClipboard(text) { + try { + // 创建临时文本区域 + const textArea = document.createElement('textarea'); + textArea.value = text; + + // 设置样式使其不可见 + textArea.style.position = 'fixed'; + textArea.style.top = '0'; + textArea.style.left = '0'; + textArea.style.width = '2em'; + textArea.style.height = '2em'; + textArea.style.padding = '0'; + textArea.style.border = 'none'; + textArea.style.outline = 'none'; + textArea.style.boxShadow = 'none'; + textArea.style.background = 'transparent'; + textArea.style.opacity = '0'; + + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + + // 尝试执行复制命令 + const successful = document.execCommand('copy'); + document.body.removeChild(textArea); + + showNotification(successful); + } catch (err) { + console.error('复制失败:', err); + showNotification(false); + } + } } // 修改排序下拉菜单