我想知道一种方法,让我的脚本检测剪贴板的内容,并在页面打开时将其粘贴到文本字段中,而无需用户输入。怎么做到呢?
获取当前剪贴板内容?
IT技术
javascript
clipboard
paste
2021-01-30 03:45:38
4个回答
使用新的剪贴板 API,通过navigator.clipboard
. 它可以像这样使用:
navigator.clipboard.readText()
.then(text => {
console.log('Pasted content: ', text);
})
.catch(err => {
console.error('Failed to read clipboard contents: ', err);
});
或者使用异步语法:
const text = await navigator.clipboard.readText();
请记住,这将提示用户一个权限请求对话框,因此不可能有任何有趣的事情。
如果从控制台调用,上面的代码将不起作用。它仅在您在活动选项卡中运行代码时才有效。要从控制台运行代码,您可以设置超时并快速单击网站窗口:
setTimeout(async () => {
const text = await navigator.clipboard.readText();
console.log(text);
}, 2000);
在Google 开发人员文档 中阅读有关 API 和用法的更多信息。
window.clipboardData.getData('Text')
将在某些浏览器中工作。然而,它工作的许多浏览器会提示用户他们是否希望网页能够访问剪贴板。
您可以使用
window.clipboardData.getData('Text')
在 IE 中获取用户剪贴板的内容。但是,在其他浏览器中,您可能需要使用 flash 来获取内容,因为没有访问剪贴板的标准界面。也许你可以试试这个插件零剪贴板
以下将为您提供所选内容以及更新剪贴板。
将元素 id 与 copy 事件绑定,然后获取选定的文本。您可以替换或修改文本。获取剪贴板并设置新文本。要获得确切的格式,您需要将类型设置为“text/hmtl”。您也可以将它绑定到文档而不是元素。
document.querySelector('element').bind('copy', function(event) {
var selectedText = window.getSelection().toString();
selectedText = selectedText.replace(/\u200B/g, "");
clipboardData = event.clipboardData || window.clipboardData || event.originalEvent.clipboardData;
clipboardData.setData('text/html', selectedText);
event.preventDefault();
});