3

ユーザーがctrl+vを使用してテキストを貼り付けた場合に、常にプレーンテキストを取得できるようにする方法を探しています。

config.forcePasteAsPlainText=true;を追加してみました。CKEDITOR.editorConfig関数に追加しても、大量のnbspを取得します。本当のプレーンテキストを取得できるように見える唯一の方法は、ツールバーのプレーンテキストとして貼り付けボタンを使用することです。ユーザーがctrl+vを使用して貼り付け、そこに貼り付ける場合に、そのウィンドウを開く方法はありますか?私はそれがfckeditorでできることを知っていますが、ckeditorでそれを機能させる方法を理解することができませんでした。

どんな助けでも大歓迎です!ありがとう

4

2 に答える 2

6

最新のSVNバージョン(3.6.3とは大きく異なるはずです)を確認しました。設定するとforcePasteAsPlainText : true(注-エディターを初期化する前に、またはでeditor.replace( el, config )-これを行う必要があります-後でこれを行うと機能しません。

Webサイトのコピーした部分を(ctrl + vで)貼り付けていますが、テキストは正しく貼り付けられています。スタイリング、不要な非プレーンテキスト要素はありません。

ただし、 エンティティはプレーンテキストでは完全に正しいです。エンティティは複数のスペースを置き換え、貼り付けテキストダイアログで貼り付けたコンテンツに対して同じ結果が得られます。

それでもctrl+vでpastetextダイアログを開きたい場合は、を使用できますCKEDITOR.config.keystrokes。この配列にはいくつかのデフォルトがあるため、それらをオーバーライドするべきではありませんが、(エディターを初期化する前に)独自のキーストロークを追加できます。

CKEDITOR.config.keystrokes.push(
    [ CKEDITOR.CTRL + 86, 'pastetext' ]
);

このキーストロークを1つのエディターにのみ追加する場合(グローバル構成の編集はすべてに影響するため)、カスタム構成ファイルを使用する必要があります(http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Setting_Configurations#Using_the_configを参照) .js_File)、次のようにキーストロークを追加します。

CKEDITOR.editorConfig = function( config )
{
    config.keystrokes = [
        // copy here all keystrokes from _source/plugins/keystrokes/plugin.js
        [ CKEDITOR.CTRL + 86, 'pastetext' ]
    ];
};

この方法ではOFCは便利ではありませんが、これはCKEditorの次のメジャーリリースで修正される予定です。

于 2012-06-20T13:11:41.773 に答える
0

これは、MSWordからでもプレーンテキストとして貼り付けられます

var editor = CKEDITOR.instances.YourInputControlName;
editor.on('paste', function(evt) {
    evt.editor.setData($('<div/>').html(evt.data.dataValue).text());
}, editor.element.$);
于 2018-03-28T10:27:23.437 に答える