vue3 如何实现页面展示 HTML代码的一键复制

问题描述

vue如何实现页面展示带script标签的HTML代码一文中成功实现了在页面展示HTML代码。如下图所示:

 在右下角有一个copy按钮,点击这个按钮能够复制展示的这段HTML代码。

实现

大致步骤在vue3如何实现文本的一键复制 中体现。复制html代码只是稍微复有点不一样。

1. 准备markdown文档

2. 装包

npm i vue-clipboard3
npm i marked

3. 引入

// 模板
<div class="dialog-code">
    <div v-highlight id="code-content" class="text" v-html="article"></div>
</div>
 
 
// js 
import { marked } from "marked";
import markdown from "./codeView.md?raw"; // 引入 markdown 文档
import clipBoard from "vue-clipboard3";
let { toClipboard } = clipBoard(); // 一键复制

const article = ref(""); // 弹窗代码展示
article.value = marked(markdown);
// 一键复制
const handleCopy = async () => {
  try {
    await toClipboard(markdown);
    console.log("success");
    ElMessage({
      message: "Copy",
      type: "success",
    });
  } catch (e) {
    ElMessage({
      message: e,
      type: "error",
    });
  }
};

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 3 可以通过自定义指令 (Directive) 和 Marked 库来实现代码一键复制的功能。 下面是实现的基本步骤: 1. 安装 Marked 库 ```bash npm install marked ``` 2. 创建一个自定义指令 在 Vue 3 中,自定义指令可以通过 `app.directive` 方法来创建。下面是一个创建 `copy-code` 指令的示例代码: ```javascript import marked from 'marked'; const copyCodeDirective = { mounted(el, binding) { const code = el.querySelector('code'); const button = document.createElement('button'); button.innerText = 'Copy'; button.addEventListener('click', () => { navigator.clipboard.writeText(code.textContent.trim()); button.innerText = 'Copied!'; setTimeout(() => { button.innerText = 'Copy'; }, 2000); }); el.appendChild(button); }, updated(el) { const code = el.querySelector('code'); const html = marked(code.textContent); code.innerHTML = html; } }; export default copyCodeDirective; ``` 这个自定义指令会在绑定的元素上添加一个 "Copy" 按钮,并且当用户点击按钮时,会将元素内部的代码文本复制到剪贴板中。 3. 在组件中使用自定义指令 ```html <template> <pre v-copy-code><code>{{ code }}</code></pre> </template> <script> import copyCodeDirective from './copyCodeDirective.js'; export default { directives: { copyCode: copyCodeDirective }, data() { return { code: 'console.log("Hello, world!");' } } }; </script> ``` 在组件中,我们可以将 `v-copy-code` 指令绑定到 `<pre>` 标签上,然后将代码文本插入到 `<code>` 标签中。 当我们在浏览器中运行这个组件时,就会看到代码旁边出现一个 "Copy" 按钮。当我们点击该按钮时,代码文本就会被复制到剪贴板中。 希望这个示例能够帮助您实现您的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值