如何复制html标签的内容到剪贴板,而不使用自己的功能?
<div @click="navigator.clipboard.writeText(this)">Hello {{ name }}!</div>
u5rb5r591#
根据document,通用代码不能访问特定于平台的API,因此如果您的代码直接使用window或document等仅限浏览器的全局变量,它们将抛出错误。因此,常见的方法是在mounted等仅限客户端的生命周期钩子中延迟访问它们。现场演示**:**
document
window
mounted
new Vue({ el: '#app', data: { name: 'Alpha', browserApi: null }, mounted() { this.browserApi = navigator } })
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> <div ref="elText" @click="browserApi.clipboard.writeText($refs.elText.innerText)">Hello {{ name }}!</div> </div>
xzlaal3s2#
我认为在Vue3中,如果没有“丑陋”的解决方案是不可能的,请参阅这里的灵感。但我认为最干净的方法是创建一个方法,其中包含一行代码。
wr98u20j3#
更好的可读性Vue;
new Vue({ el: '#app', data: { name: 'Alpha', }, methods { copyPageUrl(){ navigator.clipboard.writeText($refs.elText.innerText) }, } })
Html;
<div id="app"> <div ref="elText" @click="copyPageUrl">Hello {{ name }}!</div> </div>
3条答案
按热度按时间u5rb5r591#
根据
document
,通用代码不能访问特定于平台的API,因此如果您的代码直接使用window
或document
等仅限浏览器的全局变量,它们将抛出错误。因此,常见的方法是在mounted
等仅限客户端的生命周期钩子中延迟访问它们。现场演示**:**
xzlaal3s2#
我认为在Vue3中,如果没有“丑陋”的解决方案是不可能的,请参阅这里的灵感。但我认为最干净的方法是创建一个方法,其中包含一行代码。
wr98u20j3#
更好的可读性
Vue;
Html;