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

クリップボード操作はクロスブラウザーではありません。クロスブラウザー ソリューションの場合は、フラッシュが必要です。

このライブラリを見てください 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 ガビンを使用しているため、他のブラウザーで動作することは期待できません。

クリップボードにアクセスするためのクロスブラウザー手法については、この質問を参照してください。

クリップボードにアクセスするための標準のドラフトがありますが、実際の実装については知りません ( canIuse も何も知りません)。

于 2013-01-22T13:58:42.213 に答える
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 開発者に朗報
  • ファイアフォックス
  • サファリ (Mac のみ)

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

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

  • MSエッジ
    • UntrustedDragDrop代わりにクリップボードにオブジェクトを渡します...
    • また、setData は true を返します... 機能しない場合。setData は、他のすべてのブラウザで undefined を返します
  • Android WebView -> 4.4未満
  • iOS Safari と WebView - iOS よ!
于 2015-10-15T14:11:14.430 に答える