「短文」如何向 Vue JS Templates 添加全局变量
November 04, 2022
1 min
在 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');
注:本文属于原创文章,版权属于「前端达人」公众号及 qianduandaren.com 所有,未经授权,谢绝一切形式的转载