公众号使用clipboard复制文字

为什么

拷贝文字不应当是一件困难的事. 不需要过多繁杂的配置或者下载很多脚本文件. 最重要的,它不应该依赖flash或者其他框架,应该保持简洁

这就是创造clipboard.js的原因和目的

安装

可以通过npm工具安装

Copy to clipboardCopy to clipboardnpm install clipboard --save

如果你不打算进行包管理,可以直接下载 zip文件

设置

首先, 包含 dist 文件夹 或者从第三方CDN 那里获取资源.

Copy to clipboardCopy to clipboard<script src="dist/clipboard.min.js"></script>

现状, 你需要传入一个 DOM选择器, HTML 元素, 或者 HTML元素列表.

Copy to clipboardCopy to clipboardnew ClipboardJS('.btn');

事实上, 我们需要对你传入的所有元素绑定事件, 但是这样操作的话,当元素很多的时候,会占据很多的内存

因为这个,我们决定使用 事件代理 减少了不必要的内存开销. #perfmatters.

使用

我们正在经历一场声明式的复兴,这就是为什么我们决定利用 HTML5 data 属性 来提高可用性的原因

从另一个元素复制文本

一个很常见的用例是从另一个元素复制内容。你可以给目标元素添加一个 data-clipboard-target 属性来实现这个功能。

这个属性的值就是能匹配到另一个元素的选择器。

Copy to clipboard
Copy to clipboardCopy to clipboard<!-- Target -->
<input id="foo" value="https://github.com/zenorocha/clipboard.js.git">

<!-- Trigger -->
<button class=“btn” data-clipboard-target="#foo">
<img src=“assets/clippy.svg” alt=“Copy to clipboard”>
</button>

从另一个元素剪切文本

此外,你可以定义一个 data-clipboard-action 属性来指明你想要复制还是剪切内容

如果你省略这个属性,则默认为复制。

Mussum ipsum cacilds, vidis litro abertis. Consetis adipiscings elitis. Pra lá , depois divoltis porris, paradis. Paisis, filhis, espiritis santis. Mé faiz elementum girarzis, nisi eros vermeio, in elementis mé pra quem é amistosis quis leo. Manduma pindureta quium dia nois paga.
Cut to clipboard
Copy to clipboardCopy to clipboard<!-- Target -->
<textarea id="bar">Mussum ipsum cacilds...</textarea>

<!-- Trigger -->
<button class=“btn” data-clipboard-action=“cut” data-clipboard-target="#bar">
Cut to clipboard
</button>

正如你所料, cut 操作只在<input> 或者 <textarea> 元素上生效

从属性复制文本

事实上,你甚至不需要从另一个元素来复制内容。 你仅需要给目标元素设置一个data-clipboard-text 属性即可

Copy to clipboard
Copy to clipboardCopy to clipboard<!-- Trigger -->
<button class="btn" data-clipboard-text="Just because you can doesn't mean you should — clipboard.js">
    Copy to clipboard
</button>

事件

如果你想要展示一些用户反馈,或者在用户复制/剪切后获取已经选择的文字,这里有个示例供你参考。

我们通过触发自定义事件,比如successerror 让你可以设置监听并实现自定义逻辑

Copy to clipboardCopy to clipboardvar clipboard = new ClipboardJS('.btn');

clipboard.on(‘success’, function(e) {
console.info(‘Action:’, e.action);
console.info(‘Text:’, e.text);
console.info(‘Trigger:’, e.trigger);

e.clearSelection();

});

clipboard.on(‘error’, function(e) {
console.error(‘Action:’, e.action);
console.error(‘Trigger:’, e.trigger);
});

打开你的调试窗口,就能看到实例演示了

Tooltips提示

每个应用有着不同的设计需求,这是为什么 clipboard.js 没有包含任何 CSS 或内置的工具提示解决方案。

你在这个网站看到的提示效果是用GitHub's Primer完成的。

高级用法

如果你不想修改 HTML,我们提供了一个非常方面的命令式的 API 给你使用。你需要做的就是声明一个函数,做一些处理,并返回一个值。

例如, 你希望动态设置target, 你需要返回一个node节点.

Copy to clipboardCopy to clipboardnew ClipboardJS('.btn', {
    target: function(trigger) {
        return trigger.nextElementSibling;
    }
});

如果你希望动态设置text, 你需要返回字符串。

Copy to clipboardCopy to clipboardnew ClipboardJS('.btn', {
    text: function(trigger) {
        return trigger.getAttribute('aria-label');
    }
});

如果在 Bootstrap 模态框(Modals)中使用,或是在其他修改焦点的类库中使用,你会希望将获得焦点的元素设置为 container属性的值。

Copy to clipboardCopy to clipboardnew ClipboardJS('.btn', {
    container: document.getElementById('modal')
});

同样地,如果你使用单页应用,你可能想要更加精确地管理 DOM 的生命周期。你可以清理事件以及创建的对象。

福利

一个浏览器拓展程序,可以添加一个“复制到剪切板”按钮到所有的代码块,支持 GitHub,MDN,Gist,StackOverflow,StackExchange,npm,甚至 Medium。

Install for Chrome and Firefox.


原网址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中实现复制功能的自定义指令可以使用vue-clipboard3插件。这个插件是Vue3版本的vue-clipboard2插件的升级版,可以方便地实现将内容复制到剪贴板的功能。 要在Vue3中使用vue-clipboard3插件,首先需要安装它作为项目的依赖项。然后,在需要使用复制功能的组件中,使用v-copy指令来绑定相应的事件。 例如,可以在组件的模板中使用v-copy指令,并将要复制的内容作为指令的参数传入。然后,在指令被触发时,调用vue-clipboard3插件提供的API来实现复制功能。具体的代码可以类似下面这样: ```html <template> <button v-copy="copyText">复制内容</button> </template> <script> import { useClipboard } from 'vue-clipboard3'; export default { data() { return { copyText: '要复制的内容', } }, directives: { copy: useClipboard, }, } </script> ``` 在这个示例中,当点击按钮时,v-copy指令会将copyText的值复制到剪贴板上。 使用vue-clipboard3插件可以方便地实现在Vue3中复制内容到剪贴板的功能。通过使用v-copy指令,我们可以将复制功能应用到单根组件上,实现与Vue2相似的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3.0 如何自定义指令](https://blog.csdn.net/ww_5211314/article/details/126935476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Vue3自定义指令-10个常见的实用指令,带详细讲解,快拿去收藏!!!](https://blog.csdn.net/weixin_36813246/article/details/126864742)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值