HTML5替代基于闪存ZeroClipboard数据的安全复制到剪贴板?HTML5替代基于闪存Zer

2019-05-14 11:44发布

随着闪光灯的出路在许多环境中(iPhone,安卓,IE10,等...),没有任何新的解决方案即将在任何浏览器,让信息安全拷贝到剪贴板中不使用闪光灯安装?

我一直在使用ZeroClipboard ,到目前为止,但我担心的是没有闪光灯的更多观众和该功能将被打破,我很想不依赖于闪存只要有可能。

Answer 1:

其理由是自动复制到剪贴板中是非常危险的,所以大多数的浏览器(IE除外)*使它很难,除非你使用闪光灯。

就像你ZeroClipboard ,有剪贴板LMCButton也使用在后台运行一个小的闪光脚本。

一个常见的解决办法是要做到这一点:

 function copyToClipboard (text) {
     window.prompt ("Copy to clipboard: Ctrl+C, Enter", text);
 }

这是我从亚雷克卢斯基时发现一些别人问这个问题在这里

*是的,我发现IE一个解决方案,但是并没有在最现代的浏览器, 点击这里 。



Answer 2:

我知道这个答案是晚来了一点,但现在有一个新的现代化的替代ZeroClipboard(这是基于Flash的)。 Clipboard.js是2KB的纯JavaScript的替代方案, 没有依赖性



Answer 3:

我创建了一个纯JavaScript的解决方案称为夹-J。 这里是。 基本上它是利用了document.execCommand('copy'); 有,它使得你什么都没有看到其他一些命令。 下面的代码:

function clip(text) {   
    var copyElement = document.createElement('input');      
    copyElement.setAttribute('type', 'text');   
    copyElement.setAttribute('value', text);    
    copyElement = document.body.appendChild(copyElement);   
    copyElement.select();   
    document.execCommand('copy');   
    copyElement.remove();
}


Answer 4:

你可以看一下这篇博客对于如何在HTML5剪贴板工作进行了深入的讨论。 不幸的是,你仍然不能可移植复制到点击剪贴板。 然而,Chrome和Firefox,你可以创建一个浏览器扩展,可以让您的网站的访问权限剪贴板,我相信IE会让你复制到剪贴板,但会提示用户授予权限。

更新

根据这样的: https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand火狐41+,铬42+,和IE 9支持的execCommand用copy命令。 对于Firefox和Chrome,如果由用户操作触发它只会工作,如点击,和IE它会给用户一个警告对话框,要求他们允许复制到剪贴板。



Answer 5:

要使用的execCommand,必须先选择页面上的()的东西,所以你不只是复制无论是放在最后到剪贴板。 利用此功能,我通过输入文本框的ID输入到该函数并选择(),然后执行复制命令。 无需添加监听器或进一步您的代码复杂化。 如果没有启用或支持的document.execCommand()返回false,因此你可以使用window.prompt作为备份方法。

function copyToClipboard(id) {
    var blnCopied;
    document.getElementById(id).select();
    blnCopied = document.execCommand("copy", false, null);
    if (blnCopied)
        alert('Link copied to clipboard');
    else
        window.prompt ("Copy to clipboard: Ctrl+C, Enter", jQuery("#"+id).val());
}

使用标准的“一”锚标签与一个onclick =“copyToClipboard(‘SOME_ID’)”



Answer 6:

有极大的回答这个问题 ,我选择使用这个片段:

function copyToClipboard(element) {
    var $temp = $("<input>");
    $("body").append($temp);
    $temp.val($(element).text()).select();
    document.execCommand("copy");
    $temp.remove();
}

但是,如果你的页面上自举选的$temp.val($(element).text()).select()线将抛出一个错误:

窗口小部件只能在选择工作的元素

您可以使用.trigger('select')来代替,如中注明)jQuery的文档。选择( ,就像这样:

$temp.val($(element).val()).trigger('select');


文章来源: HTML5 alternative to flash-based ZeroClipboard for safe copying of data to clipboard?