2

CKEditor 4 用に開発しているプラ​​グインの貼り付けイベントの clipboardData 属性を読み取ろうとしています。

Chrome で、貼り付けイベントのドキュメント オブジェクトをリッスンすると、ハンドラーで渡されるイベント オブジェクトに clipboardData 属性が含まれることを確認しました。同じことが Firefox (v20) にも当てはまらないことに驚きました。

これは私が CKEditor プラグインで使用しているコードですが、CKEditor だけに関連する質問ではないと思います。Chrome では clipboardData オブジェクトが表示されますが、Firefox では表示されません。

editor.document.on('paste', function(event) {
  var clipboardData = event.data.$.clipboardData;
  if (clipboardData) {
    console.log(clipboardData);
  }
});

これがまだサポートされているかどうかを確認する MDN サイトには何も表示されません。また、IE10 はこれをサポートすることを意図していると思いますが、標準 API で動作しますか?

編集:

最初から明確にしておけばよかったのですが、画像貼り付けのサポートを開発しようとしているので、クリップボードのデータをファイルとして読み込む必要があります。

4

4 に答える 4

1

pasteイベントでクリップボードのデータを操作する必要があります。

editor.on( 'paste', function( event ) {
    console.log( event.data.dataValue );
});

event.data.dataValue貼り付けたコンテンツを操作するように変更できます。また、貼り付けデータは貼り付けフェーズで前処理されるため、優先順位が重要であることに注意してください。したがって、リスナーの優先度を数値で指定することにより、さまざまな段階で変更を「注入」できます。

editor.on( 'paste', function( event ) {
    console.log( event.data.dataValue );
}, null, null, priority );
于 2013-05-09T07:40:41.063 に答える
1

それは確かにCKEditorのみの質問です。問題は、基本 Javascript イベントを読み取ることです。しかし、CKEditor の開発者が作成した CKEditor レイヤーがありません..

彼らはすでにブラウザ間の違いに気を配っていました. そして、あなたがする必要がある唯一のこと:

var clipboardData = ev.data.dataValue
于 2013-05-09T07:29:34.717 に答える
0

つまり、すべてのクリップボード API を使用できますが、Chrome と Firefox では、貼り付けイベントを実行する場所でのみ使用できます。したがって、ユーザーはクリップボード API を使用して、オフィスで使用しているときに Web サイトから何かをコピーすることはできません。

于 2013-05-09T07:39:46.590 に答える