我想在TinyMCE的上下文菜单中添加一个新的菜单项,并在用户点击它时执行一个命令,到目前为止,我有这个,这是行不通的:
tinyMCE.init({
...
setup : function(ed) {
ed.onContextMenu.add(function(ed, menu) {
menu.add({title : 'Menu 1', onclick : function() {
alert('Item 1 was clicked.');
}});
});
}
上面的代码抛出一个错误,说“menu.add不是一个函数”,如果我删除menu.add东西并放置一个console.log(菜单),它会在打开上下文菜单时返回“contextmenu”。 / p>
将项目添加到上下文菜单的正确方法是什么?优选地,不必修改插件本身。提前谢谢。
答案 0 :(得分:4)
你需要像
这样的东西ed.onContextMenu.add(function(ed, e) {
if (!e.ctrlKey) {
// Restore the last selection since it was removed
if (lastRng)
ed.selection.setRng(lastRng);
var menu = this._getMenu(ed);
if ((typeof menu).toLowerCase() == 'object')
{
menu.showMenu(e.clientX, e.clientY);
Event.add(ed.getDoc(), 'click', function(e) {
hide(ed, e);
});
Event.cancel(e);
}
}
});
和函数_getMenu,您可以在其中插入contextmenu选项:
//example this will only display if an image was clicked
if (node !== "undefined" && node.nodeName.toLowerCase() == 'img') {
m.add({
title: 'my menu',
});
m.addSeparator();
// Inline-Element editieren
m.add({
title: 'to be choosen1',
icon: 'http://...',
cmd: 'undo'
});
t.onContextMenu.dispatch(t, m, el, col);
return m;
}
编辑:
你可以使用默认菜单(插件上下文菜单需要激活)
var editor = tinymce.get(editor_id);
var menu = editor.plugins.contextmenu._getMenu(editor);
在菜单中添加条目应该如下工作
menu.add({title : 'undo', icon : 'undo', cmd : 'Undo'});
可能需要使用showMenu
显式呈现菜单。
将菜单插入contextemenu的另一种方法是修改tiny_mce / plugins / contextemneu目录中的editor_plugin.js并直接添加条目。您也可以复制插件,修改并重命名 - 让它作为自定义插件使用。
答案 1 :(得分:0)
您可以像这样添加上下文菜单:
setup : function(ed) {
ed.onContextMenu.add(function(ed, menu) {
displayContextMenu(ed,e);
}});
});
}
function displayContextMenu(ed,e){
var m = ed.plugins.contextmenu._getMenu(ed);
m.add({title : 'advanced.bold_desc', icon : 'bold', cmd : 'bold'});
}