Salesforce LWC學習(二十八) 複製內容到系統剪貼板(clipboard)

本篇參考:javascript

https://developer.mozilla.org/zh-CN/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboardhtml

https://developer.salesforce.com/docs/component-library/tools/locker-service-viewer前端

https://github.com/zenorocha/clipboard.js(第三方插件庫,感興趣能夠本身實現)java

咱們在作項目得時候,有時須要將指定內容複製到剪貼板。對前端玩的好得會知道,js得瀏覽器擴展功能中包含和系統剪貼板得交互,詳情能夠查看最上方連接。純HTML代碼以下demo,這種demo固然百度一大堆。git

<button onclick="handleCopy()">複製內容到剪貼板</button>
<script type="text/javascript">
    function handleCopy(){
        var tag = document.createElement('textarea');
        tag.setAttribute('id', 'input_test_id');
        tag.value = 'test copy value \nthis is another line content';
        document.getElementsByTagName('body')[0].appendChild(tag);
        document.getElementById('input_test_id').select();
        document.execCommand('copy');
        document.getElementById('input_test_id').remove();
        alert('複製成功');
    }
</script>

瀏覽器運行效果:當點擊 複製內容到剪貼板按鈕之後,‘test copy value this is another line content’內容會賦值到剪貼板(換行展現),展現alert,當咱們在郵件或者其餘文本工具中 右鍵粘貼,便會將咱們複製內容粘貼。github

 這裏得核心語句是使用了document.execCommand實現了複製得功能,那麼爲何要先生成一個textarea框,而後再移除掉呢,咱們查看一下這個方法在MDN得定義。編程

經過定義咱們能夠發現,使用 document.execCommand得前提是隻容許操縱可編輯內容區域得元素,爲了支持換行復制內容,因此咱們只能先生成一個 textarea,而後進行拷貝操做之後,在移除。瞭解了之後,咱們進行lwc得編程實現。瀏覽器

 在咱們進行lwc得編程實現之前,須要先了解lwc得限制,即lwc不是支持全部得document得函數,由於lwc經過 lightning locker保證前端得安全性,經過上面得連接能夠查看到lwc中得 locker API viewer中提供得哪些對應得document函數是安全得可用的。安全

上述得功能都在locker 支持內,因此lwc代碼也能夠順利生成。demo以下:app

clipboardDemo.html

<template>
    <lightning-button label="點我複製" onclick={handleCopyToClickboardEvent}></lightning-button>
</template>

clipboardDemo.js

import { LightningElement } from 'lwc';

export default class ClipboardDemo extends LightningElement {
    handleCopyToClickboardEvent(event) {
        let tag = document.createElement('textarea');
        tag.setAttribute('id', 'input_test_id');
        tag.value = 'test copy value\nthis is another line content';
        document.getElementsByTagName('body')[0].appendChild(tag);
        document.getElementById('input_test_id').select();
        document.execCommand('copy');
        document.getElementById('input_test_id').remove();
        alert('複製成功');
    }
}

總結:篇中簡單描述如何在lwc中實現 複製內容到剪貼板。篇中有錯誤地方還請指出,有不懂歡迎留言。

相關文章
相關標籤/搜索