2

django-tinymceをインストールし、アプリにさまざまなモデルを追加しましたHTMLField

djangoadminである種の「プレーンテキストとして貼り付け」機能を作成しようとしています。ユーザーがctrl+v / cmd + v /右クリック>貼り付けなどを行うときに、MS Word、HTMLタグ、およびその他のほとんどすべてを削除したい。

たくさんの人が話しているのを見ることができますが、何もうまくいかないようです。django-tinymceなので、私はこれらすべてをで行っていTINYMCE_DEFAULT_CONFIGますsettings.py

私はそれが機能していると思った-基本管理者テンプレートをオーバーライドして、次の関数を持つjsファイルを含めました(関数のクレジットを誰が持っているのか思い出せません-おそらくSOの誰か)-

function tinymcePastePlainText() {
    var ed = tinyMCE.get(0);

    ed.pasteAsPlainText = true;  

    //adding handlers crossbrowser
    if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
        ed.onKeyDown.add(function (ed, e) {
            if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
                ed.pasteAsPlainText = true;
        });
    } else {            
        ed.onPaste.addToTop(function (ed, e) {
            ed.pasteAsPlainText = true;
        });
    }
}

次に、デフォルトの構成を設定します-

TINYMCE_DEFAULT_CONFIG = {

'plugins': "'paste'",

'paste_text_sticky': "true",
'paste_retain_style_properties': "",
'oninit': "tinymcePastePlainText",

#...Further config

}

これは、前回見たときに望んでいたことを実行しているように見えましたが、現在は機能していません。ブラウザーでのデバッグでは、tinymcePastePlainText()関数が(ロードされていても)実行されないことが示されているようです。

設定を-に設定するなど、他のさまざまな方法を試しました。

TINYMCE_DEFAULT_CONFIG = {

'plugins': "'paste'",

'paste_auto_cleanup_on_paste': 'true',
'paste_remove_styles': 'true',
'paste_remove_styles_if_webkit': 'true',
'paste_strip_class_attributes': 'true',

#....further config

}

(それは何も変わらなかったようです)。または

TINYMCE_DEFAULT_CONFIG = {

'plugins': "'paste'",

'setup': "function(ed) { ed.onInit.add(function(ed) {ed.pasteAsPlainText = true;});",

#....further config

}

上記の関数を別のjsファイルからロードしてから、関数名を構成に含めてみましたが、それも機能'setup': 'pasteAsPlainTextFuncion()'しませんでした。

私はこれに何年も費やしたようですが、実際には何の進歩もありません-なぜ私の関数が呼び出されたのかわかりませんが、今はそうではありません-ブラウザのデバッグツールはエラーを検出していません。

4

2 に答える 2

1

腹立たしい!-何らかの理由で、行に一重引用符と二重引用符の両方を適用しました- 'plugins': "'paste'",。貼り付けプラグインがロードされていませんでした。どうやって、なぜ、いつそれをしたのかわかりません。

同じことをしようとしている他の人のために(私はdjango1.4.3とdjango-tinymce1.5.1b2を使用しています)。どこでもjavascriptコールバックを使用せずに、基本的な「プレーンテキストとして貼り付け」機能(デフォルト)を取得することができました。私は単に次の設定を使用しました-

TINYMCE_DEFAULT_CONFIG = {

'plugins': "paste",

'paste_remove_styles': 'true',
'paste_remove_styles_if_webkit': 'true',
'paste_strip_class_attributes': 'all',

#... further config

}

貼り付けプラグインのドキュメントとSOに関するThariamaの回答は、どちらも非常に有益であることがわかりました。

于 2013-01-25T09:43:07.800 に答える
1

特殊な機能を使用した明確なアプローチの使用を検討することをお勧めします。このSOの質問を見てください:TinyMCEをプレーンテキストとして貼り付けます

于 2013-01-25T09:08:12.740 に答える