[HTML 5] Async clioboard

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();
}

 

posted @   Zhentiw  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2021-10-14 [Cloud Architect] 11. Protecting Data Stored in the Cloud
2020-10-14 [Kotlin] Using High Order Function
2020-10-14 [Kotlin] Exercise for Map
2020-10-14 [Kotlin] Working with Map
2020-10-14 [Kotlin] File I/O
2020-10-14 [Kotlin] Remove duplicate item from Array with toHashSet
2020-10-14 [RxJS] onErrorResumeNext
点击右上角即可分享
微信分享提示