2013-01-22 17 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!"); 
} 
} 

答えて

7

私はwindow.clipboardDataはIEだけだと思います。クリップボードにアクセスすることはセキュリティ上の懸念があるため、FFやChromeで簡単に行うことはできません。

このスレッドを参照してください:How do I copy to the clipboard in JavaScript?

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!をクリップボードに入れられます。詳細な手順については

https://github.com/jonrohan/ZeroClipboard/blob/master/docs/instructions.md

+2

cbが問題でない場合はどうなりますか?私の雇用場所は最高のものだけを使うほどスマートですから、私はChrome上で非フラッシュソリューションを望みます。 – SpYk3HH

5

ライブラリのAPIをチェックし、具体的読み込みセクション、the documentation for clipboardDataを参照してください。

ここに適用何の基準はありません。

独自のMicrosoftガービンを使用しているため、他のブラウザでは動作しないはずです。

クロスブラウザ技術を使用してクリップボードにアクセスするには、this questionを参照してください。

a draft of a standard for accessing the clipboardがありますが、野生(およびcanIuse doesn't know of any either)の実装については認識していません。

3

によって実装されています。しかし、最近、私はこのコードは特定のブラウザでのcontentEditableフィールドで動作しますが見つかりました:

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

注:この場合、eがコピーされ、および/またはイベントをカット。このイベントは起動し、onCopy()またはonCut()アクションで取得できます。

このコードは、以下のブラウザの最新バージョンで機能することが確認されています

  • クローム(パソコン/ MacとAndroidの)
  • は、Android 4。4+のWebView(限り、あなたはPlayストアからアップデートなど) - >良いニュースのAndroidのDevため
  • Firefoxの
  • のSafari(Macのみ)

Internet Explorerは、代わりにwindow.clipboardData.setDataで動作しますが、続けているようですIEクリップボードは'text''url'のデータしか受け付けないことに注意してください。

次のブラウザは、システムクリップボードオブジェクトにアクセスすることができるが、これらはclipboard.setDataを使用してクリップボードにデータを設定することができません:

  • MSエッジ
    • 代わりクリップボードにUntrustedDragDropオブジェクトを与えます..
    • また、setDataはtrueを返します。機能しない場合はtrueを返します。イェーイiOSの - 4.4
    • iOSのSafariとWebViewの下に> - 他のすべてのブラウザ
  • のAndroidのWebViewで未定義のsetData戻ります!
関連する問題