2

テキスト エディターにCLEditor ( http://premiumsoftware.net/cleditor/ ) を使用しています。「テキストとして貼り付け」機能があり、ボタンをクリックするとポップアップ ウィンドウが表示され、コンテンツを貼り付けるテキスト領域が表示され、スタイルが取り除かれます。

私がやりたいのは、これと同じ機能を利用することですが、誰かがプライマリテキストエリアに貼り付けるたびに、このアクションが自動的に実行されます。どうすればこれをトリガーできますか?

JS Fiddle http://jsfiddle.net/helpinspireme/naubS/を作成しましたが、そこにすべての JS を貼り付けることができなかったので、CLEditor のメイン JS ファイルにリンクするには、サイトhttp://premiumsoftware にアクセスしてください。ネット/債権者/

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

4

2 に答える 2

3

私はあなたの実際の質問に答えていないことを認識していますが、あなたの本当の問題が Microsoft Office (Word など) からテキストを貼り付けようとするユーザーによって生成されたガベージである場合は、別の解決策を検討することをお勧めします。

CLEditor 自体は、iFrame (リッチ テキスト モード) とテキストエリア (ソース モード) を切り替えることができます。「テキストとして貼り付け」機能は、ifself によるリッチ テキストをサポートしないテキストエリアを使用するため、そもそもガベージ html を許可しません。

ただし、エディターがリッチ テキスト モードの場合、ユーザーが Word から貼り付けを行うのを防ぐのは非常に困難です (通常の貼り付けボタンを使用するか、CTRL-V を押すか、マウスの右ボタンのコンテキスト メニューを使用することもできますが、これらはすべて異なるイベントです)。 javascript を使用してインターセプトするのは困難です)。したがって、被害はすでに発生しています。エディター内に乱雑な html があります。そのため、Word によって生成されたガベージをサニタイズしようとする代わりに、キャプチャした入力を保存する際に次のチェック (javascript) を実装しました。

if(clEditorValue && (clEditorValue.indexOf('<!--') !== -1 || clEditorValue.indexOf('mso-ansi-language') !== -1 ) ) {
  alert('Unable to process text pasted from Word, please use "Paste as text" or modify your input');
  return;
}

この回答が、同じことを達成しようとしている他の人に役立つことを願っています。

于 2013-03-04T11:24:23.353 に答える