7

この質問が今までに何百万回も聞かれたことは知っていますが、最新の適切な解決策を実際に見つけることができませんでした.

独自のメニューを実装して、ユーザーが自分の WebApp に切り取り、コピー、貼り付けできるようにしました。しかし、Firefox、IE、Safari/Chrome で実際にクリップボードを操作する方法がわかりません。

ご協力ありがとうございました。

4

2 に答える 2

7

このテーマについて、詳細なテクニカルブログ記事を書きました(私は Lucidchart で働いており、最近クリップボードのオーバーホールを行いました)。投稿に含まれているこのフィドルは、Javascript によるコピーと貼り付けの実例です。

幸いなことに、この例では、ユーザーがクリップボードのホットキーを使用するたびに、サポートされているクリップボードのデータ型を設定/取得するための実用的なコードが提供されます。

悪いニュースは、独自のコンテキスト メニューを使用してコピー アンド ペーストすることには問題があるということです。Google でさえ、これを回避することはできません (Firefox の Google ドキュメントでコンテキスト メニューのコピーまたは貼り付けを使用してみてください)。IE で問題なく動作させることができます。これは、次の方法で Javascript からいつでも clipboardData オブジェクトにアクセスできるためです。

window.clipboardData

(ただし、システムの切り取り、コピー、または貼り付けイベントの外部でこれを行おうとすると、IE はユーザーに Web アプリケーションのクリップボードのアクセス許可を付与するように求めます。)

Chrome では、Web アプリにクリップボードのアクセス許可を付与する Chrome 拡張機能を作成できます(これは、Lucidchart で行っていることです)。次に、拡張機能がインストールされているユーザーの場合は、メニュー オプションをクリックしたときにシステム イベントを自分で発生させる必要があります。

document.execCommand('copy');

Firefox には、ユーザーが特定のサイトにクリップボードへのアクセス許可を付与できるオプションがいくつかあるようですが、個人的には試していません。

于 2014-12-03T20:52:00.420 に答える
1

試してみましたか: http://ercphan.info/development/cross-browser-copy-and-paste-with-jquery-copy/

更新: リンクが利用できないため、キャッシュからコンテンツをコピーします:

シナリオ

クライアントが Web アプリのバグを報告したとき、私は SSW のクライアント プロジェクトに取り組んでいました。

このバグには、複数の従業員を選択したときに更新される、動的に生成された mailto リンクが含まれていました。クライアントは、10 人を超える従業員にメールを送信するように選択したときにエラーを報告していました。彼の Lotus Notes メール クライアントは、次のようなエラーを表示しました。

コマンド ライン引数の処理中にエラーが発生しました

これを自分でテストしたところ、mailto リンクが機能しなくなる前に、Outlook 2007 が 30 ~ 40 人の従業員の電子メールを簡単にサポートできることがわかりました。原因

mailto の仕様には制限があり、メール クライアントにも制限があることがわかりました。Lotus Notes は mailto リンクで 240 文字しか処理せず、Outlook 2007 などの他の最新のメール クライアントは 2083 文字 (URL の最大長) をサポートします。

これにより、テストの不一致が説明されます。修正 - JQuery による救助

これは HTML 仕様の制限であるため、「複数の従業員を選択して全員にメールを送信できるようにしたい」というクライアントの要件を満たすために、別のソリューションが必要でした。</p>

SMTP を使用して電子メールを送信する電子メール フォームを作成することもできましたが、クライアントは Lotus Notes をメール クライアントとして使用したいと考えていました。

最終的に「メール」ボタンを変更して、すべてのメール (カンマ区切り) をクリップボードにコピーし、新しいメール ウィンドウを開きました。クライアントがしなければならなかったのは、CTRL + V を押して、電子メールを TO フィールドに貼り付けることだけでした。これは、クライアントが独自の電子メール クライアントを使用する柔軟性を提供する、最も迅速で費用対効果の高いソリューションでした。

フラッシュ (swf) ファイルを使用してクロス ブラウザーのコピー アンド ペーストを提供する jquery.copy と呼ばれる JQuery プラグインがあります。これは、私のブログのシンタックス ハイライターの動作に似ています。

jquery.copy.js ファイルを参照したら、データをクリップボードにプッシュするために必要な作業は次のとおりです。

$.copy("some text to copy");

素晴らしく簡単です;)

注: これを機能させるには、jquery.copy.js 内の SWF ファイルのパスを変更する必要がある場合があります。

于 2009-12-23T09:55:50.243 に答える