10

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

请指教,有什么问题吗?

   function setDataToclipboard() 
{

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

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

6 回答 6

9

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

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

于 2013-01-22T13:57:30.503 回答
7

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

请参阅此线程:如何在 JavaScript 中复制到剪贴板?

于 2013-01-22T13:57:24.490 回答
6

请参阅文档clipboardData,特别是以下部分:

这里没有适用的标准。

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

有关访问剪贴板的跨浏览器技术,请参阅此问题。

一个用于访问剪贴板的标准草案,但我不知道它在野外的任何实现(并且canIuse 也不知道任何一个)。

于 2013-01-22T13:58:42.213 回答
4

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

于 2015-10-01T18:57:37.340 回答
4

我最近在使用 Chrome 和其他浏览器时遇到了同样的问题。但是,最近,我发现此代码在某些浏览器的 contenteditable 字段中有效:

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

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

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

  • Chrome(PC/Mac 和 Android)
  • Android 4.4+ WebView(只要您从 Play 商店更新)-> Android 开发者的好消息
  • 火狐
  • Safari(仅限 Mac)

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

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

  • 微软边缘
    • 而是将UntrustedDragDrop对象放入剪贴板...
    • 此外,当它不起作用时,setData 返回 true...。setData 在所有其他浏览器中返回 undefined
  • Android WebView -> 4.4 以下
  • iOS Safari 和 WebView - 是的 iOS!
于 2015-10-15T14:11:14.430 回答
0

我发现这些在 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" />
于 2019-05-16T15:04:46.177 回答