我使用下文提到的JavaScript来到剪贴板复制文本。 它工作在IE,但在Firefox和Chrome无法正常工作。
请咨询我,什么是错的?
function setDataToclipboard()
{
var str=document.getElementById("populatedString").value;
if (window.clipboardData && clipboardData.setData) {
clipboardData.setData("Text", str);
alert("Copied!");
}
}
W3C剪贴板API是被所有浏览器中实现http://caniuse.com/#feat=clipboard
剪贴板操作是不是跨浏览器。 对于跨浏览器解决方案,你需要闪光灯。
看看这个库https://github.com/jonrohan/ZeroClipboard
您可以使用ZeroClipboard这样的:
<button id="my-button" data-clipboard-text="Copy me!">Copy to Clipboard</button>
<script>
var clip = new ZeroClipboard(document.getElementById('my-button'));
</script>
当您单击按钮上的文字Copy me!
将投入到剪贴板。
为了进一步说明检查库的API https://github.com/jonrohan/ZeroClipboard/blob/master/docs/instructions.md
我认为window.clipboardData只有IE浏览器。 访问剪贴板是一个安全问题,因而不能在FF或Chrome轻松完成。
请参阅本主题: 如何复制JavaScript中的剪贴板?
参见用于文档的clipboardData
,特别是部分,上面写着:
有迹象表明,这里不应用标准。
您正在使用Microsoft私有格宾斯,因此它不应该指望在其他浏览器。
见这个问题,跨浏览器技术来访问剪贴板。
有访问剪贴板标准的草案 ,但我不是在野外知道它的任何实现(和canIuse不知道任何两种 )。
我最近曾与Chrome和其他浏览器同样的问题。 然而,最近,我发现这个代码在某些浏览器中CONTENTEDITABLE领域:
clipboard = e.originalEvent.clipboardData;
clipboard.setData('text/plain', plainData);
clipboard.setData('text/html', htmlData);
注:E在这种情况下是复制和/或切断事件。 此事件并是可检索在onCopy()
或onCut()
动作。
此代码确认了以下浏览器的最新版本的工作:
- Chrome浏览器(如PC / Mac和Android设备)
- 安卓4.4+的WebView(只要你从Play商店更新) - > Android的离散事件的好消息
- 火狐
- Safari浏览器(仅限Mac)
Internet Explorer中似乎一起工作window.clipboardData.setData
代替,但要记住的是,IE剪贴板将只接受'text'
和'url'
的数据。
虽然下面的浏览器可以访问系统剪贴板对象,这些都无法数据向使用剪贴板clipboard.setData
:
- MS边缘
- 给出了一个
UntrustedDragDrop
对象到剪贴板,而不是... - 另外,使用setData返回true ...当它不工作。 在所有其他浏览器未定义使用setData回报
- Android的web视图 - >低于4.4
- iOS的Safari浏览器和web视图 - 耶的iOS!
我发现,这些没有在Chrome或FF工作:
类型=“隐藏”
<input id="e" type="hidden" value="my text to copy to clipboard" />
风格=“显示:无;”
<input id="e" type="text" style="display:none;" value="my text to copy to clipboard" />
欺骗这个浏览器
风格= “位置:绝对的;顶部:-30;”
<input id="e" type="text" style="position: absolute; top: -30;" value="my text" />