1

tinyMCE で「fontsizeselect」プラグインを有効にしました。私の質問は、ドロップダウン メニューのヘッダー (タイトル) を削除するにはどうすればよいですか?

ここに画像の説明を入力

編集:

JQuery .remove() を使用して削除しようとしましたが、その後、リスト全体の高さが間違って計算されます。

私が試した2番目のオプションは次のとおりです。

http://www.tinymce.com/wiki.php/API3:method.tinymce.ui.DropMenu.remove

しかし、それはちょうどうまくいかず、「fontsizeselect.remove(title)」(.addと同様)はtinyMCE全体にエラーを引き起こします-「missing : after property id」。おそらく、これを行うのは完全に悪い方法です。

3 番目のオプションは、tiny_mce\themes\advanced\editor_template_src.js の 467 行目を編集することでした。

c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) {...}

しかし、TinyMCE 開発者は、すべてのドロップダウンにタイトル/ヘッダーが必要であると考えていたようです

4

1 に答える 1

0

解決済み:MCEを初期化する前に、メニューレンダリング機能をオーバーライドする必要があります

(function(tinymce) {
var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, undef;

tinymce.create('tinymce.ui.ListBoxNoTitle:tinymce.ui.ListBox', {
    renderMenu : function() {
        var t = this, m;

        m = t.settings.control_manager.createDropMenu(t.id + '_menu', {
            menu_line : 1,
            'class' : t.classPrefix + 'Menu mceNoIcons',
            max_width : 250,
            max_height : 150
        });

        m.onHideMenu.add(function() {
            t.hideMenu();
            t.focus();
        });

/*          m.add({
            title : t.settings.title,
            'class' : 'mceMenuItemTitle',
            onclick : function() {
                if (t.settings.onselect('') !== false)
                    t.select(''); // Must be runned after
            }
        });
*/
        each(t.items, function(o) {
            // No value then treat it as a title
            if (o.value === undef) {
                m.add({
                    title : o.title,
                    role : "option",
                    'class' : 'mceMenuItemTitle',
                    onclick : function() {
                        if (t.settings.onselect('') !== false)
                            t.select(''); // Must be runned after
                    }
                });
            } else {
                o.id = DOM.uniqueId();
                o.role= "option";
                o.onclick = function() {
                    if (t.settings.onselect(o.value) !== false)
                        t.select(o.value); // Must be runned after
                };

                m.add(o);
            }
        });

        t.onRenderMenu.dispatch(t, m);
        t.menu = m;
        }
    });
})(tinymce);

そして、「m.add」に関するこのコメントで、あなたはただ追加する必要があります

tinyMCE.init({
        setup : function(ed) {
            ed.onBeforeRenderUI.add(function(ed){
        ed.controlManager.setControlType('listbox', tinymce.ui.ListBoxNoTitle);
            });
        }

});

tinyMCEの標準初期化へのこのセットアップ。したがって、ソースファイルを編集せずに実行できます。

于 2012-05-22T09:47:29.127 に答える