VueJS:在不创建函数的情况下点击将标签内容复制到剪贴板

4bbkushb  于 2023-03-31  发布在  Vue.js
关注(0)|答案(3)|浏览(152)

如何复制html标签的内容到剪贴板,而不使用自己的功能?

<div @click="navigator.clipboard.writeText(this)">Hello {{ name }}!</div>
u5rb5r59

u5rb5r591#

根据document,通用代码不能访问特定于平台的API,因此如果您的代码直接使用windowdocument等仅限浏览器的全局变量,它们将抛出错误。因此,常见的方法是在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>
xzlaal3s

xzlaal3s2#

我认为在Vue3中,如果没有“丑陋”的解决方案是不可能的,请参阅这里的灵感。但我认为最干净的方法是创建一个方法,其中包含一行代码。

wr98u20j

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>

相关问题