34

我正在尝试使用 JavaScript 读取剪贴板的内容。使用 Internet Explorer 可以使用该功能

window.clipboardData.getData("Text")

在 Firefox、Safari 和 Chrome 中是否有类似的读取剪贴板的方法?

4

5 回答 5

18

onpasteSafari 支持在事件期间读取剪贴板:

信息

你想做这样的事情:

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) {
        // ...
    }
};
于 2008-10-24T18:16:13.367 回答
15

在线电子表格挂钩Ctrl+ CCtrl+V事件并将焦点转移到隐藏的 TextArea 控件,并将其内容设置为所需的新剪贴板内容以进行复制或在事件完成粘贴后读取其内容。

于 2008-11-03T10:58:24.700 回答
2

不。 如果你确实发现了一个 hack(例如旧版本的 flash),请不要依赖它。

我可以问你为什么要从剪贴板中读取吗?如果用户想要传递剪贴板内容,他们需要做的就是粘贴。

于 2008-10-24T14:47:39.297 回答
1

我相信人们使用隐藏的 Flash 元素从您提到的浏览器中读取剪贴板数据。

于 2008-10-24T14:32:39.810 回答
1

使用@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);

    });

});
于 2019-01-25T21:38:59.497 回答