大家好 我使用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
}
});
答案 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核心文件。