P粉3549487242023-08-23 18:36:44
理由 navigator.clipboard.writetext
機能しない理由:
互換性の問題 : このメソッドは、document.exec("copy")
メソッドが非推奨になった後に追加されました。 特定のブラウザ バージョンでは、この方法は機能しないため、この方法が利用可能かどうかを確認する必要があります。
ドキュメントがフォーカスされていません: ユーザーの操作なしでコンテンツをクリップボードに書き込むと、ブラウザーはリクエストをブロックし、このメソッドの間違いで Promise をスローします。ユーザーがインターネットからロードした文字列 (ajax
) をコピーしたいと想像してください。この ajax
リクエストに時間がかかると、ブラウザーのフォーカスが期限切れになり、私の経験ではコピーを完了できなくなります。
不正なアクセス許可: ユーザーは、プライバシーとセキュリティの設定を編集することで、ブラウザが自動的にクリップボードにコピーできないようにすることがあります。コピーする前に、クリップボードへの書き込み権限を確認してください。ただし、ページがアクティブなタブにある場合、clipboard-write
権限がページに自動的に付与されます。
非同期の問題: クリップボードへのコピーは非同期操作であるため、コードの作業が完了するまで待つ必要があります。
HTTP Web サイト: この機能は、サポートされている一部またはすべてのブラウザーの安全なコンテキスト (HTTPS) でのみ使用できます。
Apple Safari の問題: Apple の Clipboard API は、ほとんどの場合、クリップボードに書き込むときに Promise
を期待します。したがって、ClipboardItem
を使用して、Promise
を write
メソッドに渡すことができます。 writeText
話しやすいです、コード:
を見せてください リーリー ######使用法###:### リーリー重要なヒント: コンソールではなく、ボタンと
onclickイベントを介してテストします。
P粉7594574202023-08-23 15:36:33
navigator.clipboard.writeText
メソッドは Promise を返し、コードはその結果を待ちません。
次のコードに従って修正すれば問題ありません:
リーリーPromise
メソッドと navigator.clipboard.writeText
メソッドの詳細については、次のリンクを参照してください:
JavaScript.infoに関する約束
MDN でのクリップボードの操作