我想知道一种方法,可让我的脚本检测剪贴板的内容,并在打开页面时将其粘贴到文本字段中,而无需用户输入。如何做呢?
您不能真正知道用户剪贴板中的内容,除非用户在复制文本时使用了某种Flash后端。------- 更新: 此处更正确的答案
—
Naftali aka Neal
我想知道一种方法,可让我的脚本检测剪贴板的内容,并在打开页面时将其粘贴到文本字段中,而无需用户输入。如何做呢?
Answers:
window.clipboardData.getData('Text')
将在某些浏览器中运行。但是,许多运行它的浏览器都会提示用户是否希望网页访问剪贴板。
使用新的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();
请记住,这将提示用户一个权限请求对话框,因此不可能进行任何有趣的事情。
(注意:如果从控制台调用,则无法使用,但是需要直接的用户操作,例如按下按钮,谢谢@Artur)
setTimeout
,然后单击该页面。
您可以使用
window.clipboardData.getData('Text')
在IE中获取用户剪贴板的内容。但是,在其他浏览器中,由于没有访问剪贴板的标准界面,您可能需要使用Flash来获取内容。也许你可以试试这个插件零剪贴板
以下将为您提供选定的内容以及更新剪贴板。
将元素ID与复制事件绑定,然后获取所选文本。您可以替换或修改文本。获取剪贴板并设置新文本。要获得准确的格式,您需要将类型设置为“ text / hmtl”。您也可以将其绑定到文档而不是元素。
$(ElementId).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();
});