2013-01-22 33 views
10

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

请指教,有什么不对?

function setDataToclipboard() 
{ 

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

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

回答

10

剪贴板操作是不是跨浏览器。对于跨浏览器解决方案,您需要使用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

+2

那么如果cb不是一个问题呢?我只需要Chrome上的非Flash解决方案,因为我的工作地点足够聪明,只能使用最好的解决方案。 – SpYk3HH

3

实现我最近曾与Chrome和其他浏览器同样的问题。然而,最近,我发现这个代码在一个CONTENTEDITABLE场在某些浏览器:

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

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

此代码确认了以下浏览器的最新版本的工作:

  • 铬(PC机/苹果机和Android)
  • 安卓4.0。4+的WebView(只要你从Play商店更新) - >为(仅限Mac)的Android离散事件
  • 火狐
  • Safari浏览器

的Internet Explorer似乎好消息与window.clipboardData.setData工作,而不是,但保留请记住,IE剪贴板只会接受'text''url'数据。

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

  • MS边缘
    • 给出UntrustedDragDrop对象到剪贴板代替..
    • 另外,setData返回true时,它不起作用。 >低于4.4
    • iOS的Safari浏览器和web视图 - - 耶的iOS中的所有其他浏览器
    • 不确定
  • 的Android的WebView使用setData回报!