如何将文本从 Vuetify 的 v-text-field 复制到剪贴板?

mls*_*lst 7 javascript vue.js vue-component vuejs2 vuetify.js

我正在使用Vuetify并尝试在v-text-field单击按钮时将文本从组件复制到剪贴板。Sample code available on codepen

<template>
    <div id="app">
      <v-app id="inspire">
        <v-container>
          <v-text-field v-model="text1"></v-text-field>
          <v-btn @click="copyText">copy</v-btn>
        </v-container>
      </v-app>
    </div>
</template>

<script>
    new Vue({
      el: '#app',
      vuetify: new Vuetify(),
      data() { 
        return {
          text1: 'lorem ipsum 123'
        }
      },
      methods: {
        copyText (){
          // copy to clipboard
        }
      }
    })
</script>
Run Code Online (Sandbox Code Playgroud)

问题是copyText在Vue实例的方法中放什么代码?

Coo*_*ola 22

这个解决方案对我有用。它使用大多数现代浏览器都支持的新剪贴板 API writeText 方法(有关更多详细信息,请参阅Can I use)。写入剪贴板不需要特殊权限。

  methods: {
    copyText() {
      navigator.clipboard.writeText(this.text1);
    }
  }
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这对我有用 (2认同)

Chr*_*llo 12

您可以通过为ref属性分配一个值,然后在方法请求input元素中,使用select函数选择其内容并使用以下方法复制该内容document.execCommand("copy");

<template>
    <div id="app">
      <v-app id="inspire">
        <v-container>
          <v-text-field v-model="text1" ref="textToCopy"></v-text-field>
          <v-btn @click="copyText">copy</v-btn>
        </v-container>
      </v-app>
    </div>
</template>

<script>
    new Vue({
      el: '#app',
      vuetify: new Vuetify(),
      data() { 
        return {
          text1: 'lorem ipsum 123'
        }
      },
      methods: {
        copyText () {
          let textToCopy = this.$refs.textToCopy.$el.querySelector('input')
          textToCopy.select()
          document.execCommand("copy");
        }
      }
    })
</script>
Run Code Online (Sandbox Code Playgroud)