0

ねえStackoverflowコミュニティ、

貼り付け時にHTMLコードをクリーンアップするサンプルコードを作成しましたが、期待どおりに機能していません。すべてのペーストで複製されて<textarea>おり、ペーストが機能していません。

これがJsFiddleです:http://jsfiddle.net/Kxmaf/214/

どんな助けでも大歓迎です:)

4

1 に答える 1

0

新しいバージョン: http://jsfiddle.net/Kxmaf/218/

あなたは正しかったのですが、貼り付けイベントの待ち時間setTimeout()については知りませんでした。今、私はFFで見ましたが、それはちょっとバグがあるので、私はそれをかなり単純化しました(これ以上焦点を当てないでください、execCommand):document.execCommand()

$editor.on('paste, keydown', function() {
    var $self = $(this);            
    setTimeout(function(){ 
        var $content = $self.html();             
        $clipboard.val($content);
    },100);
});

これはどうですか:http://jsfiddle.net/Kxmaf/215/

$editor.on('paste, keydown', function() {
     var $self = $(this),
         $content = $self.html();       
     $clipboard.val('').focus();
     document.execCommand('insertHTML', false, $content);
     $self.html($content);
     placeCaretAtEnd($self);                
});

もうsetTimeout()。私にはより良い音だったので、keydown も追加しました ;) 必要に応じて削除できます。これは:

  • #content の内容を取ります
  • テキストエリアのコンテンツを削除して、それに集中します。
  • #content のコンテンツをテキストエリアに挿入します
  • #content のコンテンツが削除または置換された場合に置き換えます (これは私のテストの一部であり、$self.html($content);現在関連があるかどうかはわかりません.
  • #content の最後にあるキャレットでフォーカスします。

placeCaretAtEnd()少し変更したhttps://stackoverflow.com/a/4238971/460368から来ています。

于 2012-07-02T09:39:16.710 に答える