2013-01-22 32 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回報!