64

多くの環境(iPhone、Android、IE10など)でフラッシュが出て行く途中で、フラッシュをインストールせずにクリップボードに情報を安全にコピーできる新しいソリューションがブラウザに登場しますか?

私はこれまでZeroClipboardを使用してきましたが、Flashを持たないビューアが増えるのではないかと心配しており、この機能が機能しなくなるため、可能な限りFlashに依存しないようにしたいと思います。

4

6 に答える 6

20

その理由は、クリップボードへの自動コピーは非常に危険な場合があるためです。そのため、ほとんどのブラウザー (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 では、クリップボードにコピーする許可を求める警告ダイアログが表示されます。

于 2012-06-21T14:49:39.843 に答える
19

この回答が少し遅れていることは承知していますが、現在、ZeroClipboard (Flash ベース) に代わる最新の新しい代替手段があります。Clipboard.jsは、依存関係のない2kB の純粋な JavaScriptの代替手段です。

于 2015-11-01T18:09:40.533 に答える
3

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 では、クリップボードにコピーする許可を求める警告ダイアログが表示されます。

于 2015-04-11T18:49:02.493 に答える
0

この質問には優れた回答があり、私はこのスニペットを使用することにしました:

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');
于 2017-12-14T14:23:16.550 に答える