复制到剪贴板 - 在FF不工作,Chrome浏览器(copy to clipboard - not

2019-08-07 19:48发布

我使用下文提到的JavaScript来到剪贴板复制文本。 它工作在IE,但在Firefox和Chrome无法正常工作。

请咨询我,什么是错的?

   function setDataToclipboard() 
{

var str=document.getElementById("populatedString").value; 

if (window.clipboardData && clipboardData.setData) {
    clipboardData.setData("Text", str);
    alert("Copied!");
}
}

Answer 1:

W3C剪贴板API是被所有浏览器中实现http://caniuse.com/#feat=clipboard



Answer 2:

剪贴板操作是不是跨浏览器。 对于跨浏览器解决方案,你需要闪光灯。

看看这个库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



Answer 3:

我认为window.clipboardData只有IE浏览器。 访问剪贴板是一个安全问题,因而不能在FF或Chrome轻松完成。

请参阅本主题: 如何复制JavaScript中的剪贴板?



Answer 4:

参见用于文档的clipboardData ,特别是部分,上面写着:

有迹象表明,这里不应用标准。

您正在使用Microsoft私有格宾斯,因此它不应该指望在其他浏览器。

见这个问题,跨浏览器技术来访问剪贴板。

有访问剪贴板标准的草案 ,但我不是在野外知道它的任何实现(和canIuse不知道任何两种 )。



Answer 5:

我最近曾与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!


Answer 6:

我发现,这些没有在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" />


文章来源: copy to clipboard - not working in FF,Chrome