首页与我联系

「短文」如何在 Vue 中复制文本到剪贴板

By 前端达人
Published in 3-Vue
November 04, 2022
1 min read
「短文」如何在 Vue 中复制文本到剪贴板

复制输入框的内容

在 Vue 项目中的 input 或 textarea 复制文本,您应该编写一个方法来使用 Vue ref 调用元素的 select() 和 setSelectionRange() 方法。

Vue.createApp({
  data: () => ({ message: '' }),
  methods: {
    copyText() {
      const element = this.$refs.message;
      element.select();
      element.setSelectionRange(0, 99999);
      document.execCommand('copy');
    }
  },
  template: `
  <div>
    <div>
      <input id="example" v-model="message" ref="message" />
    </div>
    <button @click="copyText()">Click to Copy</button>
    <div>
      <h3>Paste here</h3>
      <div>
        <textarea></textarea>
      </div>
    </div>
  </div>
  `
}).mount('#app');

复制非输入框的内容

要从不是 textarea 或 input 的元素复制文本,您应该使用 document.createElement() 函数创建一个假的 textarea。一旦你创建了一个假的 textarea,你可以将 textarea 的内容设置为你想要使用之前的方法复制的值。然后在复制文本后删除 textarea。

Vue.createApp({
  data: () => ({ message: '' }),
  methods: {
    copyTextNoInput() {
      const storage = document.createElement('textarea');
      storage.value = this.$refs.message.innerHTML;
      this.$refs.reference.appendChild(storage);
      storage.select();
      storage.setSelectionRange(0, 99999);
      document.execCommand('copy');
      this.$refs.reference.removeChild(storage);
    }
  },
  template: `
  <div>
    <div ref="message">This is text that you wish to copy</div>
    <button @click="copyTextNoInput()">Click to Copy</button>
    <div>
      <h3>Paste here</h3>
      <div>
      <textarea></textarea>
      </div>
    </div>
  </div>
  `
}).mount('#app2');

前端达人公众号.jpg

注:本文属于原创文章,版权属于「前端达人」公众号及 qianduandaren.com 所有,未经授权,谢绝一切形式的转载


Tags

vue
Previous Article
「短文」如何向 Vue JS Templates 添加全局变量
前端达人

前端达人

专注前端知识分享

Table Of Contents

1
复制输入框的内容
2
复制非输入框的内容

相关文章

「短文」如何向 Vue JS Templates 添加全局变量
November 04, 2022
1 min

前端站点

VUE官网React官网TypeScript官网

公众号:前端达人

前端达人公众号