fix: 修复issue,COPY-01 复制直链功能 FAILED 控制台报错:Cannot read properties of undefined (reading 'writeText') 剪贴板API兼容性问题、改进剪贴板复制功能以兼容旧浏览器
添加对旧浏览器的兼容性处理,当navigator.clipboard不可用时,使用document.execCommand作为备选方案
This commit is contained in:
30
script.js
30
script.js
@@ -298,7 +298,35 @@ function copyDirectLink(appId, fileName) {
|
|||||||
const directLink = `${API_BASE_URL}/apps/${appId}`; // 生成直链URL
|
const directLink = `${API_BASE_URL}/apps/${appId}`; // 生成直链URL
|
||||||
|
|
||||||
// 复制到剪贴板
|
// 复制到剪贴板
|
||||||
navigator.clipboard.writeText(directLink)
|
const copyToClipboard = (text) => {
|
||||||
|
if (navigator.clipboard && navigator.clipboard.writeText) {
|
||||||
|
return navigator.clipboard.writeText(text);
|
||||||
|
} else {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const textarea = document.createElement('textarea');
|
||||||
|
textarea.value = text;
|
||||||
|
textarea.style.position = 'fixed';
|
||||||
|
textarea.style.opacity = '0';
|
||||||
|
document.body.appendChild(textarea);
|
||||||
|
textarea.select();
|
||||||
|
|
||||||
|
try {
|
||||||
|
const successful = document.execCommand('copy');
|
||||||
|
document.body.removeChild(textarea);
|
||||||
|
if (successful) {
|
||||||
|
resolve();
|
||||||
|
} else {
|
||||||
|
reject(new Error('复制命令执行失败'));
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
document.body.removeChild(textarea);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
copyToClipboard(directLink)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
// 显示复制成功提示
|
// 显示复制成功提示
|
||||||
const message = document.createElement('div');
|
const message = document.createElement('div');
|
||||||
|
|||||||
Reference in New Issue
Block a user