[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();
}
分类:
HTML 5
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源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