diff --git a/src/utils/clipboard.js b/src/utils/clipboard.js index a126806..edba3d5 100644 --- a/src/utils/clipboard.js +++ b/src/utils/clipboard.js @@ -8,75 +8,87 @@ * @returns {Promise} 是否复制成功 */ export function copyToClipboard(text, options = {}) { - const { - successMsg = '复制成功', + const { + successMsg = '复制成功', errorMsg = '复制失败,请手动复制', vm = null - } = options; - - return new Promise((resolve) => { - // 创建textarea元素 - const textarea = document.createElement('textarea'); - textarea.value = text; - textarea.style.position = 'fixed'; // 防止页面滚动 - document.body.appendChild(textarea); - textarea.select(); - - try { - // 执行复制命令 - const successful = document.execCommand('copy'); - if (successful) { - if (vm && vm.$Message) { - vm.$Message.success(successMsg); - } else { - console.log(successMsg); - } - resolve(true); - } else { - throw new Error('Copy command was unsuccessful'); - } - } catch (err) { - console.error('复制失败:', err); + } = options; + + return new Promise((resolve) => { + // 创建textarea元素 + const textarea = document.createElement('textarea'); + textarea.value = text; + textarea.style.position = 'fixed'; // 防止页面滚动 + document.body.appendChild(textarea); + textarea.select(); + + try { + // 执行复制命令 + const successful = document.execCommand('copy'); + if (successful) { if (vm && vm.$Message) { - vm.$Message.error(errorMsg); + vm.$Message.success(successMsg); } else { - console.error(errorMsg); + console.log(successMsg); } - resolve(false); - } finally { - document.body.removeChild(textarea); - } - }); - } - - /** - * @param {string} text 要复制的文本 - * @param {Object} options 配置选项 - * @returns {Promise} 是否复制成功 - */ - export async function modernCopyToClipboard(text, options = {}) { - const { - successMsg = '复制成功', - errorMsg = '复制失败,请手动复制', - vm = null - } = options; - - try { - // 使用现代剪贴板API - if(navigator?.clipboard && navigator?.clipboard?.writeText){ - await navigator?.clipboard?.writeText(text); - if (vm && vm.$Message) { - vm.$Message.success(successMsg); - } else { - console.log(successMsg); - } - return true; + resolve(true); + } else { + throw new Error('Copy command was unsuccessful'); } } catch (err) { - console.error(errorMsg, err); - // 现代API失败后回退到传统方法 - return copyToClipboard(text, options); + console.error('复制失败:', err); + if (vm && vm.$Message) { + vm.$Message.error(errorMsg); + } else { + console.error(errorMsg); + } + resolve(false); + } finally { + document.body.removeChild(textarea); } + }); +} + +/** + * @param {string} text 要复制的文本 + * @param {Object} options 配置选项 + * @returns {Promise} 是否复制成功 + */ +export async function modernCopyToClipboard(text, options = {}) { + const { + successMsg = '复制成功', + // errorMsg = '复制失败,请手动复制', + vm = null + } = options; + + // try { + // 使用现代剪贴板API + // if(navigator?.clipboard && navigator?.clipboard?.writeText){ + // await navigator?.clipboard?.writeText(text); + // if (vm && vm.$Message) { + // vm.$Message.success(successMsg); + // } else { + // console.log(successMsg); + // } + // return true; + // } + // } catch (err) { + // console.error(errorMsg, err); + // 现代API失败后回退到传统方法 + // return copyToClipboard(text, options); + // } + debugger + if (navigator.clipboard && window.isSecureContext) { + console.log('走了1111'); + await navigator?.clipboard?.writeText(text); + if (vm && vm.$Message) { + vm.$Message.success(successMsg); + } else { + console.log(successMsg); + } + } else { + return copyToClipboard(text, options); } - - export default modernCopyToClipboard; \ No newline at end of file +} + +export default modernCopyToClipboard; \ No newline at end of file