改变一些tinymce行为(javascript)

时间:2011-01-18 18:47:11

标签: javascript tinymce

大家好 我使用tinymce格式下拉列表将自定义样式应用于html元素。这适用于没有HTML知识的用户 对我来说一件令人讨厌的事情是,当用户点击不同的样式时,他们都会被添加,这样的事情可能会发生

<div class="floatleft floatright positionup positiondown">

为了防止这种情况,我搜索了editor_template.js(压缩)中的负责代码,但在editor_template_src.js中可见

有没有办法重写这段javascript,以便每个应用的样式取代前者?

_createStyleSelect : function(n) {
            var t = this, ed = t.editor, ctrlMan = ed.controlManager, ctrl;

            // Setup style select box
            ctrl = ctrlMan.createListBox('styleselect', {
                title : 'advanced.style_select',
                onselect : function(name) {
                    var matches, formatNames = [];

                    each(ctrl.items, function(item) {
                        formatNames.push(item.value);
                    });

                    ed.focus();
                    ed.undoManager.add();

                    // Toggle off the current format
                    matches = ed.formatter.matchAll(formatNames);
                    if (!name || matches[0] == name)
                        ed.formatter.remove(matches[0]);
                    else
                        ed.formatter.apply(name);

                    ed.undoManager.add();
                    ed.nodeChanged();

                    return false; // No auto select
                }
            });

2 个答案:

答案 0 :(得分:1)

怎么样:

if (!name || matches[0] == name)
    ed.formatter.remove(matches[0]);
else
    ed.formatter.remove(matches[0]);
    ed.formatter.apply(name);

只是一个疯狂的猜测,我自己没试过。

答案 1 :(得分:0)

这要做很多工作,但可以做到。 我解决了这个问题,编写自定义插件并使用自定义FormatterClass。 我建议您尝试使用tiny_mce_dev.js进行开发 - 这样您就可以跟踪js类的问题。 然后你应该看一下js-class Formatter.js并尝试修改这个以满足你的愿望。 下一步将保存mofied Formatter.js并使其成为插件的一部分,以便您可以重置真正的Formatter.js,因为我建议不要更改tinymce核心文件。