7

フラッシュを使用してWebページの「クリップボードにコピー」機能をだます方法があります...

しかし、純粋なjavascriptの方法でそれを作成する方法はありますか(ただし、クロスモダンブラウザーでもあります)?

Adobe でさえ、html5 に重点を置きながら、Flash に注意を向けなくなったからです...

4

3 に答える 3

4

セキュリティ上の理由から、ほとんどのブラウザーはクリップボードの変更を許可していません (IE を除く)。

クリップボードへのコピー機能をクロスブラウザー対応にする唯一の方法は、Flash を使用することです。

今のところ、コピーするすべてのデータを選択し、ユーザーにCTRL+をクリックするように依頼できますC

于 2013-04-30T07:27:15.037 に答える
4

現在、そのクロスブラウザを実行する方法はありません(セキュリティ上の理由で無効になっていることがよくあります)。古いブラウザにはそのような機能がないか (セキュリティ上の問題)、手動でオンにする必要があることがよくあります... しかし、古いブラウザでは、Flashを使用してこれを行う可能性が高くなります ...

UPDATE 2016
まだモバイル クロス ブラウザーではありませんが、主要なブラウザーの新しいデスクトップ バージョンでサポートされています... Mozilla 開発者ドキュメントでは、 Document.execCommand()と具体的には「コピー」コマンドの
説明が少し改善されました。

現在の選択をクリップボードにコピーします。この動作を有効にする条件はブラウザ によって異なり、時間の経過とともに進化してきました。互換性表を確認して、自分のケースで使用できるかどうかを判断してください。

UPDATE 2016-08: 現在のすべての主要なデスクトップ ブラウザーで採用されているコピー/カット!

UPDATE 2021 => に変更Clipboard API

document.execCommand()は古いものとしてマークされていましたが、 何らかの理由で IE9+ をサポートする必要がある場合は、将来的に両方を実装する必要があります
Clipboard API

クリップボード API の MDN:

この 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 のやり方」についての引用

将来的には、他のブラウザでも同じように行われる可能性があります:

Firefox 41 より前は、user.js 設定ファイルでクリップボード機能を有効にする必要がありました。詳細については、Mozilla 設定の簡単なガイドを参照してください。コマンドがサポートされていないか有効になっていない場合、execCommand は false を返す代わりに例外を発生させていました。
Firefox 41 以降では、クリップボード機能は、ウィンドウをポップアップできるすべてのイベント ハンドラー (半信頼スクリプト) でデフォルトで有効になっています。

つまり、コピー/切り取りをサポートするブラウザーは、ユーザーの操作によってのみコピー/切り取りを行う可能性が非常に高くなります。例: その場でコピー コマンドを呼び出しても機能しませんが、クリック イベントにバインドされている場合は、イベントが防止されていない場合 (ナビゲーションなど) にも機能します (Chrome テスト済み)。

また、Selection APIについて も説明している Google の興味深い記事を次に示します

ところで:もちろん、テキストを事前に選択してユーザーにCTRL+をクリックするように依頼することもできCますが、ユーザーエクスペリエンスが失われます。

于 2016-03-23T22:28:53.013 に答える
-3

これが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>

于 2013-04-30T07:23:20.340 に答える