我使用插件“vue-qrcode”为用户生成二维码,以便为他们的公共个人资料链接生成二维码,以便他们可以在名片上分享。
现在的想法是通过一个按钮让用户有可能下载二维码,并通过另一个按钮将二维码复制到剪贴板,以便更容易通过邮件发送(特别是对于智能手机用户)。
问题是:我不知道如何下载或复制二维码。有人知道如何复制或下载二维码吗?目前我使用“vue-clipboard2”来复制链接等,但似乎无法复制图像。
我使用下面的代码在我们的网站上显示二维码:
<template> <qrcode-vue style = "cursor: pointer;" :value = "linkToProfile" size = 160 level = "M" :background = "backgroundcolor_qrcode" :foreground = "color_qrcode" ></qrcode-vue> </template> <script> import Vue from 'vue' import QrcodeVue from 'qrcode.vue' Vue.component('qrcode-vue', QrcodeVue ) export default { data: () => ({ linkToProfile: "http://www.example.com/johnDoe", }) </script>
谢谢 - 克里斯蒂安
P粉0233267732023-11-06 12:21:45
我找到了解决方法。解决方案如下:
模板区域:
<qrcode-vue id="qrblock" :value = "linkToSki" size = 220 level = "M" ref="qrcode" ></qrcode-vue>
功能区域:
// -- 复制/下载二维码的功能区域 - 结束 --- function selectText(element) { if (document.body.createTextRange) { const range = document.body.createTextRange(); range.moveToElementText(element); range.select(); } else if (window.getSelection) { const selection = window.getSelection(); const range = document.createRange(); range.selectNodeContents(element); selection.removeAllRanges(); selection.addRange(range); } } function copyBlobToClipboardFirefox(href) { const img = document.createElement('img'); img.src = href; const div = document.createElement('div'); div.contentEditable = true; div.appendChild(img); document.body.appendChild(div); selectText(div); const done = document.execCommand('Copy'); document.body.removeChild(div); return done; } function copyBlobToClipboard(blob) { // eslint-disable-next-line no-undef const clipboardItemInput = new ClipboardItem({ 'image/png' : blob }); return navigator.clipboard .write([clipboardItemInput]) .then(() => true) .catch(() => false); } function downloadLink(name, href) { const a = document.createElement('a'); a.download = name; a.href = href; document.body.append(); a.click(); a.remove(); } // -- 复制/下载二维码的功能区域 - 结束 ---