我想知道一种方法,可以让我的脚本检测剪贴板的内容,并在页面打开时将其粘贴到文本字段中,而不需要用户输入。如何实现?
我想知道一种方法,可以让我的脚本检测剪贴板的内容,并在页面打开时将其粘贴到文本字段中,而不需要用户输入。如何实现?
注意,截至2023年2月版本109,此解决方案在Firefox浏览器中无效,因此除非您知道没有用户使用Firefox,否则不要使用此解决方案。
使用新的剪贴板API,通过navigator.clipboard
。可以按照以下方式使用:
使用async/await语法:
const text = await navigator.clipboard.readText();
或者使用 Promise 语法:
navigator.clipboard.readText()
.then(text => {
console.log('Pasted content: ', text);
})
.catch(err => {
console.error('Failed to read clipboard contents: ', err);
});
请记住,这将提示用户一个权限请求对话框,因此不可能有任何幽默的事情发生。
如果从控制台调用,上述代码将不起作用。 它只在您运行代码时在活动选项卡中工作。 要从控制台运行代码,您可以设置一个超时并快速点击网站窗口:
setTimeout(async () => {
const text = await navigator.clipboard.readText();
console.log(text);
}, 2000);
请参阅Google开发者文档,了解API和用法的更多信息。
setTimeout
进行测试,然后再单击页面返回。 - edbentleywindow.clipboardData.getData('Text')
在一些浏览器中可以使用。然而,在许多支持该方法的浏览器上,会提示用户是否允许网页访问剪贴板。
您可以使用
window.clipboardData.getData('Text')
在IE浏览器中获取用户剪贴板的内容。但是,在其他浏览器中,您可能需要使用Flash来获取内容,因为没有标准接口可以访问剪贴板。也许您可以尝试使用此插件 Zero Clipboard
以下将为您提供所选内容并更新剪贴板。
绑定元素ID与复制事件,然后获取所选文本。您可以替换或修改文本。获取剪贴板并设置新文本。要获得精确的格式,您需要将类型设置为"text/html"。您也可以将其绑定到文档而不是元素。
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();
});