复制到剪贴板 - 不适用于FF,Chrome

时间:2013-01-22 13:55:26

标签: javascript html cross-browser

我使用下面提到的javascript将文本复制到剪贴板。它在IE中工作,但不适用于Firefox和Chrome。

请告诉我,有什么问题?

   function setDataToclipboard() 
{

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

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

6 个答案:

答案 0 :(得分:10)

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

查看此库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

答案 1 :(得分:7)

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

请参阅此主题:How do I copy to the clipboard in JavaScript?

答案 2 :(得分:5)

请参阅the documentation for clipboardData,特别是以下部分:

  

此处没有适用的标准。

您正在使用专有的Microsoft gubbins,因此不应期望它可以在其他浏览器上运行。

有关访问剪贴板的跨浏览器技术,请参阅this question

a draft of a standard for accessing the clipboard但我不知道它在野外的任何实现(和canIuse doesn't know of any either)。

答案 3 :(得分:4)

w3c剪贴板api已由所有浏览器http://caniuse.com/#feat=clipboard

实施

答案 4 :(得分:4)

我最近在Chrome和其他浏览器上遇到了同样的问题。但是,最近,我发现此代码在某些浏览器中的可信范围内工作:

clipboard = e.originalEvent.clipboardData;
clipboard.setData('text/plain', plainData);
clipboard.setData('text/html', htmlData);

注意:在这种情况下,e是复制和/或剪切事件。此事件会触发,并可在onCopy()onCut()操作中检索。

此代码已确认可在以下浏览器的最新版本中使用:

  • Chrome(PC / Mac和Android)
  • Android 4.4+ WebView(只要您从Play商店更新) - &gt; Android Devs的好消息
  • 火狐
  • Safari(仅适用于Mac)

Internet Explorer似乎与window.clipboardData.setData配合使用,但请记住,IE剪贴板只接受'text''url'数据。

虽然以下浏览器可以访问系统剪贴板对象,但这些浏览器无法使用clipboard.setData将数据设置到剪贴板中:

  • MS Edge
    • UntrustedDragDrop对象提供给剪贴板而不是......
    • 另外,setData返回true ...当它不起作用时。 setData在所有其他浏览器中返回undefined
  • Android WebView - &gt;低于4.4
  • iOS Safari和WebView - 适用于iOS!

答案 5 :(得分:0)

我发现这些在Chrome或FF中不起作用:

type =“ hidden”

<input id="e" type="hidden" value="my text to copy to clipboard" />

style =“ display:none;”

<input id="e" type="text" style="display:none;" value="my text to copy to clipboard" />

以此欺骗浏览器

style =“ position:absolute; top:-30;”

<input id="e" type="text" style="position: absolute; top: -30;" value="my text" />