自定义UI下拉按钮不显示所有命令
Custom UI dropdown button not showing up all commands
我正在像下面这样将一组命令分组到一个下拉列表中,但所有项目都没有显示在中
CKEDITOR.config.toolbar = [{
name: 'paragraph',
groups:['list', 'indent', 'blocks', 'align', 'bidi'],
items: ['More']
}];
CKEDITOR.replace(editorName, {
on: {
pluginsLoaded: function () {
var editor = this,
items = {}, groupName = 'Justify_Group',
config = CKEDITOR.config;
var more_Group = 'More_Group';
editor.addMenuGroup(more_Group);
var moreButtons = {
Subscript: 'Sub Script',
Superscript: 'Super Script',
NumberedList: 'Numbered List',
BulletedList: 'Bullet List',
Outdent: 'Outdent',
Indent: 'Indent',
Blockquote: 'Blockquote',
RemoveFormat: 'Remove Format'
}, moreItems = {};
for (var i in moreButtons) {
var v = moreButtons[i];
moreItems[i.toLowerCase()] = {
label: v,
group: more_Group,
command: i.toLowerCase(),
order: 1
};
}
editor.ui.add('More', CKEDITOR.UI_MENUBUTTON, {
label: 'More',
name: 'More',
modes: {
wysiwyg: 1
},
onMenu: function () {
var active = {};
for (var p in moreItems)
active[p] = null
return active;
}
});
}
}
});
但同样的事情也适用于Justify按钮。在上面的命令列表中,只有项目符号列表显示在下拉列表中,并且(properties)
文本也添加到给定的标签中。
如何解决此问题
您唯一缺少的就是添加正确的菜单项。
它是用editor.addMenuItem
完成的。
为什么要添加菜单项
CKEditor UI菜单使用菜单项,而不是按钮或类似的东西。
提到的项目符号列表/编号列表只是巧合,很可能是因为其他插件注册了它们,以便在上下文菜单中使用它(因为它重用菜单对象)。
如何在您的情况下修复它
为了使事情变得更容易,我们将使用editor.addMenuItems
。
如果不包括命令名的小写字母,那就是它了。我也会修的。
CKEDITOR.config.toolbar = [{
name: 'paragraph',
groups:['list', 'indent', 'blocks', 'align', 'bidi'],
items: ['More']
}];
CKEDITOR.replace(editorName, {
on: {
pluginsLoaded: function () {
var editor = this,
items = {}, groupName = 'Justify_Group',
config = CKEDITOR.config;
var more_Group = 'More_Group';
editor.addMenuGroup(more_Group);
var moreButtons = {
subscript: 'Sub Script',
superscript: 'Super Script',
numberedlist: 'Numbered List',
bulletedlist: 'Bullet List',
outdent: 'Outdent',
indent: 'Indent',
blockquote: 'Blockquote',
removeFormat: 'Remove Format'
}, moreItems = {};
for (var i in moreButtons) {
var v = moreButtons[i];
moreItems[i.toLowerCase()] = {
label: v,
group: more_Group,
command: i,
order: 1
};
}
editor.addMenuItems( moreItems );
editor.ui.add('More', CKEDITOR.UI_MENUBUTTON, {
label: 'More',
name: 'More',
modes: {
wysiwyg: 1
},
onMenu: function () {
var active = {};
for (var p in moreItems)
active[p] = null
return active;
}
});
}
}
});
什么会变得奇怪
您需要注意的是,默认菜单实现不会显示相关命令状态等于CKEDITOR.TRISTATE_OFF
的菜单项。
您可以随时通过评估editor.commands.bold.state !== CKEDITOR.TRISTATE_DISABLED
来检查此条件。
您可以通过传递将调用您的命令的onClick
回调来解决此问题,而不是将command
作为字符串提供,但您还需要手动关心命令状态。语言插件中也使用了类似的技巧。进一步的解释超出了这个问题的范围。
相关文章:
- wysihtml5命令显示为未定义
- 自定义UI下拉按钮不显示所有命令
- Nodejs向http服务器发送命令以突出显示或着色DOM元素
- 在命令运行时以Grunt显示输出
- 如何使用array_merge在PHP/Higharts中显示未引用的命令
- "显示更多“<h: 命令按钮>使用ajax
- 执行命令链接的操作并显示对话框
- 在执行 h:命令链接操作时显示工作图像
- 余烬构建命令失败并显示错误:没有这样的文件或目录,lstat ../ember-cli-test-loader/test
- 动画 GIF 不会在命令上显示
- 是否可以使用show/hide javascript来显示具有相同onclick命令的2个元素
- 如何通过扩展命令显示/隐藏chrome的选项卡或导航按钮
- Java-使用“;查找“;用于显示访问文件中的特定记录或从中删除特定记录的命令
- Javascript-显示命令链接,然后消失
- 这个JavaScript函数和显示命令示例的更有效版本
- 使用javascript在html页面上显示bash命令行输出
- 显示命令# 39;标签在AppBar与更多按钮
- 用调试器命令在仿真模式下启动Chrome,但页面显示为PC版本
- 如何在带有用户输入字段的HTML页面上执行SQL命令,并在同一页面上显示结果
- Jquery bootgrid不显示命令按钮