vue 复制文字的方法

文章介绍了在Vue中复制文字的两种方法:一是使用原生JavaScript的事件监听和execCommand方法;二是引入Clipboard库,通过监听copy事件和销毁实例来实现。两种方法都在代码示例中展示了如何在元素被点击时将特定文本复制到剪贴板。

vue 复制文字

vue 复制文字的方法

  1. 使用原生方法
  2. 使用Clipboard库 【该库的方法在elementUI部分组件中复制不了,例如Dialog 对话框、Popover 弹出框等】

使用原生方法

<template>
	<span		
		style="cursor: pointer; color: #4064ec; font-weight: 700"
		title="点击可复制"
		data-clipboard-text="我想你了"
		@click="copyText"
		>我想你了
	</span>
</templete>
methond(){
	  copyText(msg) {
            const save = function(e) {
                e.clipboardData.setData('text/plain', msg)
                e.preventDefault() // 阻止默认行为
            }
            const once = {
                once: true
            }
            document.addEventListener('copy', save, once) // 添加一个copy事件,当触发时执行一次,执行完删除
            document.execCommand('copy') // 执行copy方法
            this.$message({ message: '复制成功', type: 'success' })
        },
}

使用Clipboard库

<template>
	<span	
		class="tag-read"	
		style="cursor: pointer; color: #4064ec; font-weight: 700"
		title="点击可复制"
		data-clipboard-text="我想你了"
		@click="copyText"
		>我想你了
	</span>
</templete>
methond(){
	copyPresId() {
		let clipboard = new Clipboard('.tag-read');
		clipboard.on('success', (e) => {
			this.$message({
				message: '已复制到剪贴板',
				showClose: true,
				type: 'success',
			});
			// 释放内存
			clipboard.destroy();
		});
		clipboard.on('error', (e) => {
			this.$message({ message: '复制失败', showClose: true, type: 'error' });
			clipboard.destroy();
		});
	},
}
### 在 Vue.js 中实现从 PDF 文件中复制文本 为了实现在 Vue.js 项目中能够查看并复制 PDF 文档中的文字,可以采用 `pdf.js` 库来加载和渲染 PDF 文件。通过特定版本的 `pdf.js` 可以有效减少 API 不兼容带来的错误[^1]。 #### 安装依赖库 首先,在项目根目录下安装所需的 npm 包: ```bash npm install pdfjs-dist --save ``` 这会下载适合用于生产环境下的 `pdf.js` 版本,并将其保存至项目的 package.json 文件里。 #### 加载 PDF 并显示页面 接着创建一个组件用来处理 PDF 的展示逻辑。这里提供了一个简单的例子说明如何初始化 PDF 查看器并将第一页的内容绘制出来: ```javascript <template> <div id="app"> <canvas ref="theCanvas"></canvas> </div> </template> <script> import * as pdfjsLib from 'pdfjs-dist'; // 导入字体样式支持中文等其他字符集 import 'pdfjs-dist/web/pdf_viewer.css'; export default { name: "PdfViewer", mounted() { const loadingTask = pdfjsLib.getDocument('example.pdf'); loadingTask.promise.then(pdf => { console.log(`Pages: ${pdf.numPages}`); // 获取第一个页面 pdf.getPage(1).then(page => { let scale = 1.5; let viewport = page.getViewport({scale}); // 准备 canvas 元素以便绘图 let canvas = this.$refs.theCanvas; let context = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; var renderContext = { canvasContext: context, viewport: viewport }; // 渲染页面内容到画布上 page.render(renderContext); }); }, reason => { console.error(reason); }); } } </script> ``` 上述代码片段实现了基本的 PDF 页面呈现功能。对于想要获取具体某页的文字内容,则需调用 `page.getTextContent()` 方法返回该页上的所有文本项列表对象,之后遍历这些文本项提取所需的信息。 #### 提取并允许复制文本 为了让用户可以直接选中并复制 PDF 上面的文字,还需要额外编写一些 JavaScript 来解析由 `getTextContent()` 返回的数据结构,并将它们转换成 HTML 或纯文本格式供浏览器识别。以下是简化版的做法: ```javascript ... pdf.getPage(1).then(page => { ... // 添加此部分以启用文本选择 page.getTextContent().then(textItems => { textItems.items.forEach(item => { // 创建 span 标签包裹每一个单词/符号 let div = document.createElement("span"); div.textContent = item.str; div.style.position = "absolute"; div.style.left = `${item.transform[4]}px`; div.style.top = `${item.transform[5]}px`; // 将其附加到 body 下方或其他容器内 document.body.appendChild(div); // 设置 CSS 属性使文本可见且可被选取 div.style.whiteSpace = "pre-line"; div.style.wordBreak = "break-all"; }); }).catch(err => console.log(err)); }); ... ``` 这段脚本会在网页 DOM 结构中动态添加多个 `<span>` 元素表示每一段独立的文本字符串,并设置合适的定位参数让这些元素按照原始位置排列在屏幕上。这样做的好处是可以让用户像操作普通网页一样轻松地高亮、剪切或粘贴文档内的任何一部分文字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值