多くの環境(iPhone、Android、IE10など)でフラッシュが出て行く途中で、フラッシュをインストールせずにクリップボードに情報を安全にコピーできる新しいソリューションがブラウザに登場しますか?
私はこれまでZeroClipboardを使用してきましたが、Flashを持たないビューアが増えるのではないかと心配しており、この機能が機能しなくなるため、可能な限りFlashに依存しないようにしたいと思います。
多くの環境(iPhone、Android、IE10など)でフラッシュが出て行く途中で、フラッシュをインストールせずにクリップボードに情報を安全にコピーできる新しいソリューションがブラウザに登場しますか?
私はこれまでZeroClipboardを使用してきましたが、Flashを持たないビューアが増えるのではないかと心配しており、この機能が機能しなくなるため、可能な限りFlashに依存しないようにしたいと思います。
その理由は、クリップボードへの自動コピーは非常に危険な場合があるためです。そのため、ほとんどのブラウザー (IE を除く)* では、フラッシュを使用しない限りコピーが難しくなります。
ZeroClipboard と同じように、バックグラウンドで実行される小さなフラッシュ スクリプトも使用するClipboard LMCButtonがあります。
一般的な解決策は、これを行うことです。
function copyToClipboard (text) {
window.prompt ("Copy to clipboard: Ctrl+C, Enter", text);
}
他の誰かがここで質問したときに、Jarek Milewski から見つけたもの
*はい、IE 向けのソリューションを 1 つ見つけましたが、最近のほとんどのブラウザーでは機能しません。こちらを確認してください。
アップデート:
これによると: https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand Firefox 41+、Chrome 42+、および IE 9+ は、execCommand を使用したコピー コマンドをサポートしています。Firefox と chrome では、クリックなどのユーザー アクションによってトリガーされた場合にのみ機能し、IE では、クリップボードにコピーする許可を求める警告ダイアログが表示されます。
この回答が少し遅れていることは承知していますが、現在、ZeroClipboard (Flash ベース) に代わる最新の新しい代替手段があります。Clipboard.jsは、依存関係のない2kB の純粋な JavaScriptの代替手段です。
HTML5 でクリップボードを操作する方法の詳細については、このブログ投稿を参照してください。残念ながら、クリックでクリップボードに移植可能にコピーすることはまだできません。ただし、chrome と firefox の場合は、サイトにクリップボードへのアクセス許可を与えることができるブラウザー拡張機能を作成できます。IE ではクリップボードにコピーできますが、ユーザーに許可を与えるように求めるプロンプトが表示されると思います。
更新:
これによると: https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand Firefox 41 以降、Chrome 42 以降、および IE 9 以降は、execCommand を使用したコピー コマンドをサポートしています。Firefox と chrome では、クリックなどのユーザー アクションによってトリガーされた場合にのみ機能し、IE では、クリップボードにコピーする許可を求める警告ダイアログが表示されます。
この質問には優れた回答があり、私はこのスニペットを使用することにしました:
function copyToClipboard(element) {
var $temp = $("<input>");
$("body").append($temp);
$temp.val($(element).text()).select();
document.execCommand("copy");
$temp.remove();
}
ただし、ページに bootstrap-select がある場合、$temp.val($(element).text()).select()
行はエラーをスローします。
ウィジェットは選択した要素でのみ機能します
.select().trigger('select')
の jQuery ドキュメントに記載されているように、代わりに次のように使用できます。
$temp.val($(element).val()).trigger('select');