是否可以使用Javascript在Firefox,Safari和Chrome中读取剪贴板?
-
04-07-2019 - |
题
我正在尝试使用Javascript读取剪贴板的内容。使用Internet Explorer可以使用函数
window.clipboardData.getData("Text")
是否有类似的方法在Firefox,Safari和Chrome中阅读剪贴板?
解决方案
Safari支持在 onpaste
事件中阅读剪贴板:
你想做类似的事情:
someDomNode.onpaste = function(e) {
var paste = e.clipboardData && e.clipboardData.getData ?
e.clipboardData.getData('text/plain') : // Standard
window.clipboardData && window.clipboardData.getData ?
window.clipboardData.getData('Text') : // MS
false;
if(paste) {
// ...
}
};
其他提示
在线电子表格挂钩Ctrl + C,Ctrl + V事件并将焦点转移到隐藏的TextArea控件,并将其内容设置为所需的新剪贴板内容以便复制或在事件完成粘贴后读取其内容。
NO。 如果您确实发现黑客(例如旧版本的闪存),请不要依赖它。
我可以问你为什么要从剪贴板上阅读?如果用户想要传递剪贴板内容,他们需要做的只是粘贴。
我相信人们会使用隐藏的Flash元素从您提到的浏览器中读取剪贴板数据。
使用@agsamek建议我创建了一个小测试剪切并让它工作。在我的情况下,我需要等待一个新的页面加载后粘贴输入,所以我专注于一个视野外的textarea并从那里读取文本。
您可以将其扩展为侦听特定键(粘贴组合),然后将焦点放在隐藏字段上。肯定还有更多的工作要做,因为我认为你需要重新关注最后一个关注元素并在那里粘贴内容。
对于我的用例,虽然这足以让它在最新的Chrome和Firefox中运行。建议欢迎。
https://jsfiddle.net/wuestkamp/91dxjv7s/11/
$(function () {
$('body').prepend('<input type="text" id="hidden_textbox" style="position: absolute; width:0px; height: 0px; top: -100px; left: -100px">');
var $hiddenTextbox = $('#hidden_textbox');
$hiddenTextbox.focus();
$(document).on('paste', function () {
setTimeout(function () {
var val = $hiddenTextbox.val();
console.log('pasted: ' + val);
}, 50);
});
});
不隶属于 StackOverflow