我正在尝试使用JavaScript读取剪贴板的内容。在Internet Explorer中,可以使用该函数实现。
window.clipboardData.getData("Text")
在Firefox、Safari和Chrome中是否有类似的读取剪贴板的方法?
我正在尝试使用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控件,然后将其内容设置为所需的新剪贴板内容以进行复制,或在事件完成后读取其内容以进行粘贴。
onbeforepaste
事件:你有办法解决吗? - Tim Down编号,如果您发现了黑客攻击(例如旧版本的Flash),也不要依赖它。
我可以问一下您为什么想从剪贴板读取内容吗?如果用户想要传递剪贴板内容,他们只需要粘贴即可。
我相信人们使用隐藏的 Flash 元素从你提到的浏览器读取剪贴板数据。
使用 @agsamek 的建议,我创建了一个小的测试片段并使其工作。在我的情况下,我需要在页面刷新后等待粘贴的输入,因此我专注于一个不可见的文本区域并从那里读取文本。
您可以将其扩展到监听特定键(粘贴组合键),然后聚焦于隐藏字段。肯定还有更多的工作要做,因为我认为您需要重新聚焦于最后聚焦的元素并在那里粘贴内容。
对于我的用例,这已足以使它在最新的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);
});
});