随着闪光灯的出路在许多环境中(iPhone,安卓,IE10,等...),没有任何新的解决方案即将在任何浏览器,让信息安全拷贝到剪贴板中不使用闪光灯安装?
我一直在使用ZeroClipboard ,到目前为止,但我担心的是没有闪光灯的更多观众和该功能将被打破,我很想不依赖于闪存只要有可能。
随着闪光灯的出路在许多环境中(iPhone,安卓,IE10,等...),没有任何新的解决方案即将在任何浏览器,让信息安全拷贝到剪贴板中不使用闪光灯安装?
我一直在使用ZeroClipboard ,到目前为止,但我担心的是没有闪光灯的更多观众和该功能将被打破,我很想不依赖于闪存只要有可能。
其理由是自动复制到剪贴板中是非常危险的,所以大多数的浏览器(IE除外)*使它很难,除非你使用闪光灯。
就像你ZeroClipboard ,有剪贴板LMCButton也使用在后台运行一个小的闪光脚本。
一个常见的解决办法是要做到这一点:
function copyToClipboard (text) {
window.prompt ("Copy to clipboard: Ctrl+C, Enter", text);
}
这是我从亚雷克卢斯基时发现一些别人问这个问题在这里
*是的,我发现IE一个解决方案,但是并没有在最现代的浏览器, 点击这里 。
我知道这个答案是晚来了一点,但现在有一个新的现代化的替代ZeroClipboard(这是基于Flash的)。 Clipboard.js是2KB的纯JavaScript的替代方案, 没有依赖性 。
我创建了一个纯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();
}
你可以看一下这篇博客对于如何在HTML5剪贴板工作进行了深入的讨论。 不幸的是,你仍然不能可移植复制到点击剪贴板。 然而,Chrome和Firefox,你可以创建一个浏览器扩展,可以让您的网站的访问权限剪贴板,我相信IE会让你复制到剪贴板,但会提示用户授予权限。
更新 :
根据这样的: https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand火狐41+,铬42+,和IE 9支持的execCommand用copy命令。 对于Firefox和Chrome,如果由用户操作触发它只会工作,如点击,和IE它会给用户一个警告对话框,要求他们允许复制到剪贴板。
要使用的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’)”
有极大的回答这个问题 ,我选择使用这个片段:
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');