TinyMCE 中的动态菜单按钮项

标签 dynamic tinymce refresh

我的 tinyMCE 编辑器中有一个自定义菜单按钮,它使用页面其他地方的特定 HTML 元素作为菜单项。我使用 jQuery 选择器获取元素列表,然后分别添加一个作为菜单项:

c.onRenderMenu.add(function(c,m) {
  m.add({ title: 'Pick One:', 'class': 'mceMenuItemTitle' }).setDisabled(1);
  $('span[data-menuitem]').each(function() {
    var val = $(this).html();
    m.add({ 
      title: $(this).attr("data-menuitem"), 
      onclick: function () { tinyMCE.activeEditor.execCommand('mceInsertContent', false, val) }
    });
  });
});

我的问题是,这只会在首次单击按钮和首次呈现菜单时发生一次。当前页面上的 HTML 元素偶尔会根据用户点击和一些 AJAX 发生变化,因此我需要在每次呈现菜单时运行此选择器代码,以确保菜单完全是最新的。这可能吗?

如果做不到这一点,是否可以从页面其他地方的 AJAX 调用结束时动态更新控件?我不确定如何访问菜单项并对其进行更新。使用 tinyMCE.activeEditor.controlManager...?

谢谢!

最佳答案

我找到了这个问题的解决方案,尽管我不确定这是最好的方法。

看起来我无法让 tinyMCE 重新呈现菜单,所以我在 AJAX 调用的末尾添加了一些代码:在更新 DOM 之后,它会手动更新 tinymce 下拉菜单。

可以使用以下方式访问菜单对象:

tinyMCE.activeEditor.controlManager.get('editor_mybutton_menu')

其中 mybutton 是我的自定义控件的名称。我的快捷解决方案是在此菜单对象上调用 removeAll()(以删除所有当前菜单项),然后重新执行我的选择器代码以在 ( new) DOM 并根据新状态添加回菜单项。

它似乎工作得很好,但总是欢迎调整和想法!

关于TinyMCE 中的动态菜单按钮项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15089861/

相关文章:

c++ - 循环内不变多态类型的优化

java - 为什么这段填充数组的代码会造成内存泄漏?

PHP 验证链接到下一页

javascript - 重新加载javascript而不刷新页面

asp.net - 如何避免页面刷新时的按钮事件

c# - 如果 Binder 名称为 GetType() 或 ToString() 等,TryInvokeMember 不会触发

android - 当用户点击它时用动画改变背景

wordpress - 使用 attr 向 TinyMCE 节点添加属性不起作用

reactjs - Tinymce React组件 'Editor'不能用作JSX组件

javascript - Gulp - 将 vendor 发布到文件夹