首页 > 其他分享 >[HTML 5] Async clioboard

[HTML 5] Async clioboard

时间:2022-10-14 16:12:37浏览次数:69  
标签:copy const text clioboard source HTML Async document paste

https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API

const app = document.getElementById('app');
app.innerHTML = `
  <h1>JavaScript HTML5 APIs</h1>
  <pre class="source" contenteditable>export class Pizza extends Food {
  constructor (private name: string) {}
}</pre>
  <button type="button" class="copy">Copy</button>
  <button type="button" class="paste">Paste</button>
  <div class="destination"></div>
  <style>
  .source {
    background: #15181e;
    text-align: left;
    max-width: 95%;
    margin: 25px auto;
    font-size: 16px;
    color: #fff;
    padding: 25px;
    border-radius: 5px;
    box-sizing: border-box;
  }
  </style>
`;

const init = () => {
  const source = document.querySelector('.source');
  const destination = document.querySelector('.destination');
  const copy = document.querySelector('.copy');
  const paste = document.querySelector('.paste');

  const copyToClipboard = async () => {
    try {
      await navigator.clipboard.writeText(source.innerText);
      console.log('Copied!');
    } catch (e) {
      console.log('Failed to copy!', e);
    }
  };

  const pasteToClipboard = async () => {
    try {
      const text = await navigator.clipboard.readText();
      console.log(`Paste... ${text}`);
      destination.innerText = text;
    } catch (e) {
      console.log('Failed to paste!', e);
    }
  };

  copy.addEventListener('click', copyToClipboard);
  paste.addEventListener('click', pasteToClipboard);

  document.addEventListener('copy', (e) => {
    e.preventDefault();
    e.clipboardData.setData(
      'text/plain',
      e.target.innerText.replace('Pizza', 'Burger')
    );
  });

  document.addEventListener('paste', (e) => {
    e.preventDefault();
    const text = e.clipboardData.getData('text/plain');
    destination.innerText = text;
  });
};

if ('clipboard' in window.navigator) {
  init();
}

 

标签:copy,const,text,clioboard,source,HTML,Async,document,paste
From: https://www.cnblogs.com/Answer1215/p/16791906.html

相关文章

  • Flask 学习-90.Flask-RESTX 返回 HTML 内容
    前言Flask-RESTX框架默认返回的是application/json格式,使用render_template()返回html内容遇到了一些问题遇到的问题需要使用render_template()返回HTML内容fromfla......
  • 4. HTML引用CSS(4种方法)
    1. 前言CSS样式需要引用到HTML中才能真正有效,那么如何才能在HTML中引用CSS呢?下面就来介绍一下。2.内嵌样式表您可以在HTML头部(<head>标签内)的<style>标签......
  • ECM5 asynchronous
    <scripttype="text/javascript">"usestrick";letregularFunction=()=>{return"Hello";}lettimeoutFunction=msg=>{varreturnMsg;setTimeout((......
  • 如何修改html input type file 的语言
    情况描述:在浏览器中,即使lang="en",文件输入框也会显示电脑的语言如何修改:思路:把原有的input框display:none,然后通过label触发对应功能,重新写入另一个div显示文件名。<st......
  • 在HTML网页中巧用URL
    首先,先放出一个地址给大家测试​​http://cnbruce.com/test/htmlpro/?name=cnbruce&[email protected]​​1,时下流行的(可能是吧,因为最近问的人比......
  • [Unit testing RxJS] Test asynchronous operations with marbles
    const{TestScheduler}=require("rxjs/testing");const{map,take,delay}=require("rxjs/operators");const{concat,from}=require("rxjs");describe(......
  • HTML基础
    HyperTextMarkupLanguage一、HTML基本结构标签成对出现,单个的叫自闭合标签二、网页基本信息DOCTYPE:告诉浏览器要使用什么规范meta:描述性标签,用来描述网站信息......
  • HTML元素
      <form>表单以下是表单元素 <input type=  text文本 /  radio单选按钮/  submit提交按钮>输入属性  action在提交表单时执......
  • html技巧
    1.dialog<divclass="app"><dialogopen><p>Greetings,oneandall!</p><formmethod="dialog"><button>OK</button></form></dialog></div>......
  • 【JS】11-前端HTML5几种存储方式的总结
    接下来要好好总结一些知识,秋招来啦。。。虽然有好多知识都不大会,但是还是要努力一下,运气这种东西,谁知道呢~总体情况h5之前,存储主要是用​​cookies​​​。​​cookies​​......