7

ここで提案されているように、peranhacms のデフォルトの tinymce をオーバーライドしようとしています  を html に追加しないように Piranha CMS html エディターを構成/オーバーライドします 。その問題には多くのリソースがありますが、うまくいきません。

これが私の tinymce.init の外観です。

<script type="text/javascript" src="~/res.ashx/areas/manager/content/js/ext/tiny_mce/tinymce.min.js"></script>
<script type="text/javascript">
    tinymce.init({
        mode: 'specific_textareas',
        editor_selector: "editor",
        apply_source_formatting: false,
        cleanup_on_startup: false,
        trim_span_elements: false,
        cleanup: false,
        convert_urls: false,
        force_br_newlines: true,
        force_p_newlines: false,
        remove_linebreaks: false,
        convert_newlines_to_brs: false,
        forced_root_block: '',
        inline_styles : true,
        entity_encoding: 'raw',
        verify_html: false,
        //forced_root_block: false,
        validate_children: false,
        remove_redundant_brs: false,
        fix_table_elements: false,

        entities: '160,nbsp,38,amp,60,lt,62,gt',

        plugins: [
            "autoresize autolink code hr paste piranhaimage link"
        ],
        width: "100%",
        height: "340",
        autoresize_min_height: 340,
        @if (File.Exists(Server.MapPath("~/areas/manager/content/css/editor.css"))) {
        <text>content_css: "@Url.Content("~/areas/manager/content/css/editor.css")",</text>
        }
        toolbar: "bold italic underline | bullist numlist hr | formatselect removeformat | cut copy paste | link piranhaimage | code",
        paste_auto_cleanup_on_paste: false,
        paste_postprocess: function (pl, o) {
            // remove extra line breaks
            o.node.innerHTML = o.node.innerHTML.replace(/&nbsp;/ig, " ");
            alert("a1");
        },
        cleanup_callback: 'my_cleanup_callback',
    });
    function my_cleanup_callback(type, value) {
        alert("a2");
        switch (type) {
            case 'get_from_editor':
                // Remove &nbsp; characters
                value = value.replace(/&nbsp;/ig, ' ');
                alert("a3");
                break;
            case 'insert_to_editor':
            case 'submit_content':
            case 'get_from_editor_dom':
            case 'insert_to_editor_dom':
            case 'setup_content_dom':
            case 'submit_content_dom':
            default:
                break;
        }
        return value;
    }
</script>

これは、tinyice textarea に貼り付けるために使用する html の例です。

<div class="catelog-box">
    <img src="images/dance.png" alt="dine">
    <div class="cat-detail">
    <h2>Dance</h2>
    <p>Dis purus arcu etiam auctor risus aliquam mid turpis eu vel, nunc rhoncus lacus natoque ridiculus...</p>          
  </div>
</div>

そして、それはブラウザのソースでどのように見えるかです: ここに画像の説明を入力

実際に発火するかどうかを確認するためにアラートを設定しましたが、そうではありませpaste_postprocessん。my_cleanup_callbackそして、私はまだhtmlに を持っています。

私は設定しようとしてcleanup: trueいましたが、発射するのにpaste_auto_cleanup_on_paste: true役立ちませんでしたpaste_postprocessmy_cleanup_callback

  の問題をどのように解決しますか?

4

5 に答える 5

12

追加するだけentity_encoding: 'raw'で問題は解決しました。

于 2016-06-22T12:52:16.183 に答える
4

次のコードは、tinymce コンテンツのすべてをクリーンアップします

tinymce.init({
    selector: "textarea",
    invalid_elements :'strong,bold,b,em,br,span,div,p,img,a,table,td,th,tr,header,font,body,h,h1,h2,h3,h4,h5',
    invalid_styles: 'color font-size text-decoration font-weight',
    menubar: false,
    toolbar:false,
    statusbar:false,
    forced_root_block : "",
    cleanup: true,
    remove_linebreaks: true,
    convert_newlines_to_brs: false,
    inline_styles : false,
    entity_encoding: 'raw',
    entities: '160,nbsp,38,amp,60,lt,62,gt',
 });}
于 2015-08-07T08:13:14.483 に答える
2

TinyMCE はオプションと設定の怪物ですが、あなたが提供たリンクと TinyMCEのクリーンアップ方法を使用したことを考えると、単語 paste を使用するときにスペースの代わりに   を追加します。設定を試しましたか:

paste_auto_cleanup_on_paste: true

これは、参照している例で設定されているためです。その推測は別として、イベントが発火しない理由がわかりません。

よろしくお願いします

ホーカン

于 2015-01-07T22:25:07.100 に答える