剪贴板示例

本示例演示如何把文本复制到剪贴板。它取自 Ninext 示例应用中的 Copy / Paste data 示例。
function copyToClipboard(text : text) do
#{:text navigator.clipboard.writeText(text);}#
end;
navigator.clipboard.writeText() 的使用限制
navigator.clipboard.writeText(text) 这个 API 受到浏览器强制执行的安全限制。它必须由用户交互(例如点击按钮)直接触发。
如果在用户交互与调用 writeText() 之间出现延迟或中间处理(例如某项计算),浏览器就不再认为该操作是由用户发起的,会阻止访问剪贴板以防滥用。
最佳实践:
- 直接在用户事件处理程序(例如
onclick)中调用navigator.clipboard.writeText(text)。 - 避免在用户操作与函数调用之间引入异步操作或延迟。
正确示例:
document.getElementById("copyButton").addEventListener("click", () => {
navigator.clipboard.writeText("Copied text!")
.then(() => console.log("Text copied successfully!"))
.catch(err => console.error("Error copying text:", err));
});
错误示例(可能无法工作):
document.getElementById("copyButton").addEventListener("click", () => {
setTimeout(() => { // Introducing a delay may prevent copying
navigator.clipboard.writeText("Copied text!");
}, 100);
});
