2012-03-28 20 views
2

テキストエディタには、CLEditor、http://premiumsoftware.net/cleditor/を使用しています。 'テキストとして貼り付ける'機能があり、ボタンをクリックするとポップアップウィンドウが表示され、内容を貼り付けるためのテキストエリアが表示され、スタイルが取り除かれます。メインウィンドウのテキスト機能としてコンテンツを貼り付けるCLEditor

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

私はJSフィドル、http://jsfiddle.net/helpinspireme/naubS/を作成したが、リンクにCLEditorのための主要なJSファイルに自分のサイトを訪問するように、そこにすべてのJSをペーストすることができませんでしたしている:http://premiumsoftware.net/cleditor/

はあなたの助けをいただき、ありがとうございます。

答えて

3

私は選択肢を検討することをお勧めします私はあなたの実際の質問に答えるわけではないことを認識していますが、場合にあなたの本当の問題は、(例えば単語)のMicrosoft Officeから貼り付けたテキストをしようとするユーザーによって生成されたごみです溶液。

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

ただし、リッチテキストモードでは、ユーザーがWordから貼り付けるのを防ぐことは非常に難しいです(通常の貼り付けボタンを使用したり、CTRL-Vを押したり、右マウスボタンのコンテキストメニューを使用することもできます。すべて異なるイベントであり、javascriptを使用して傍受するのは難しい)。だから今、ダメージはすでに終わっています。あなたのエディタの中には面倒なhtmlがあります。

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; 
} 

私はこの答えは同じことを達成しようとしている他の人々のために有用であると思います。だからではなく、言葉によって生成ごみをサニタイズしようとしているの私が撮影した入力を保存するときに、次のチェック(ジャバスクリプト)を実装しました。

0

cleditorに貼り付けるとき、エディタはソースからすべてのHTMLを取得します。私はjquery.cleditor.jsの編集を終了し、$ doc.click(hidePopups)関数にバインド関数を追加しました。 setTimeoutsを使用して、入力およびupdateTextArea関数をテキストに挿入して完了させることができました。

.bind("paste", function() { 
      setTimeout(function() { 
       refreshButtons(editor); 
       updateTextArea(editor, true); 
       //remove any and all html from the paste action 
       setTimeout(function() { 
        //clean up the html with removeHtml function 
        $(editor.doc.body).html(removeHtml($(editor.doc.body).html())); 

        //change the input value with new clean string 
        $("#" + editor.$area[0].id).val($(editor.doc.body).html()); 
       }, 100); 
      }, 100); 
     }) 

は私が貼り付けられたコンテンツからすべてのHTMLを削除するには、以下のremoveHtml関数を使用します。

//remove html altogether 
function removeHtml(str) { 
    var regex = /(<([^>]+)>)/ig; 
    var result = str.replace(regex, ""); 
    return result; 
} 

このソリューションは現在生産中です。

関連する問題