フラッシュを使用してWebページの「クリップボードにコピー」機能をだます方法があります...
しかし、純粋なjavascriptの方法でそれを作成する方法はありますか(ただし、クロスモダンブラウザーでもあります)?
Adobe でさえ、html5 に重点を置きながら、Flash に注意を向けなくなったからです...
フラッシュを使用してWebページの「クリップボードにコピー」機能をだます方法があります...
しかし、純粋なjavascriptの方法でそれを作成する方法はありますか(ただし、クロスモダンブラウザーでもあります)?
Adobe でさえ、html5 に重点を置きながら、Flash に注意を向けなくなったからです...
セキュリティ上の理由から、ほとんどのブラウザーはクリップボードの変更を許可していません (IE を除く)。
クリップボードへのコピー機能をクロスブラウザー対応にする唯一の方法は、Flash を使用することです。
今のところ、コピーするすべてのデータを選択し、ユーザーにCTRL+をクリックするように依頼できますC。
現在、そのクロスブラウザを実行する方法はありません(セキュリティ上の理由で無効になっていることがよくあります)。古いブラウザにはそのような機能がないか (セキュリティ上の問題)、手動でオンにする必要があることがよくあります... しかし、古いブラウザでは、Flashを使用してこれを行う可能性が高くなります ...
UPDATE 2016
まだモバイル クロス ブラウザーではありませんが、主要なブラウザーの新しいデスクトップ バージョンでサポートされています...
Mozilla 開発者ドキュメントでは、 Document.execCommand()と具体的には「コピー」コマンドの
説明が少し改善されました。
現在の選択をクリップボードにコピーします。この動作を有効にする条件はブラウザ によって異なり、時間の経過とともに進化してきました。互換性表を確認して、自分のケースで使用できるかどうかを判断してください。
UPDATE 2016-08: 現在のすべての主要なデスクトップ ブラウザーで採用されているコピー/カット!
Clipboard API
document.execCommand()
は古いものとしてマークされていましたが、
何らかの理由で IE9+ をサポートする必要がある場合は、将来的に両方を実装する必要があります
。Clipboard API
この API は、document.execCommand() を使用したクリップボードへのアクセスに取って代わるように設計されています。
まだ開発中であり、いくつかの実装の詳細があることに注意してください。互換性テーブルの詳細については、MDN リンクを参照してください。
MDN の Clipboard.writeText() の例:
navigator.clipboard.writeText("<empty clipboard>").then(function() {
/* clipboard successfully set */
}, function() {
/* clipboard write failed */
});
MDN の互換性表: 2021 年 4 月 30 日現在
将来的には、他のブラウザでも同じように行われる可能性があります:
Firefox 41 より前は、user.js 設定ファイルでクリップボード機能を有効にする必要がありました。詳細については、Mozilla 設定の簡単なガイドを参照してください。コマンドがサポートされていないか有効になっていない場合、execCommand は false を返す代わりに例外を発生させていました。
Firefox 41 以降では、クリップボード機能は、ウィンドウをポップアップできるすべてのイベント ハンドラー (半信頼スクリプト) でデフォルトで有効になっています。
つまり、コピー/切り取りをサポートするブラウザーは、ユーザーの操作によってのみコピー/切り取りを行う可能性が非常に高くなります。例: その場でコピー コマンドを呼び出しても機能しませんが、クリック イベントにバインドされている場合は、イベントが防止されていない場合 (ナビゲーションなど) にも機能します (Chrome テスト済み)。
また、Selection APIについて も説明している Google の興味深い記事を次に示します。
ところで:もちろん、テキストを事前に選択してユーザーにCTRL+をクリックするように依頼することもできCますが、ユーザーエクスペリエンスが失われます。
これがIEでできる1つの方法です...
<body>
<textarea rows="5" cols="20" wrap="hard" onblur="CopyToClipboard(this)"></textarea>
</body>
<script language="JavaScript">
function CopyToClipboard(text) {
Copied = text.createTextRange();
Copied.execCommand("Copy");
}
</script>