【问题标题】:How to listen for text selected in tinymce?如何收听在tinymce中选择的文本?
【发布时间】:2020-02-04 11:04:18
【问题描述】:

我正在尝试从tinymce获取文本选择事件,我做的方式如下

const editor = global["tinymce"].activeEditor;
editor.on("NodeChange", e => {
  const selectedText = editor.selection.getContent({ format: "text" });

});

在包含此代码之前,wordpress 已经加载了 Tinymce,我面临的问题是 NodeChange 事件未在编辑器实例上触发。我不想为此创建一个 tinymce 插件,这可能不创建插件吗? 如果我通过控制台添加它,我在这里粘贴的代码实际上可以工作,当我正常加载它时我会丢失一些东西

【问题讨论】:

  • 是的,这是可能的,而且您走在正确的轨道上。看这里stackoverflow.com/questions/49228768/…
  • @GrafiCode 谢谢,但我的用例与您提到的链接不同,在我的情况下,tinymce 是由 wordpress 初始化的,我无法再次重新初始化它
  • 我明白了,在这种情况下你应该在init之后寻找事件绑定:stackoverflow.com/questions/18514994/…
  • 我忘了添加,如果我在控制台中添加它,我在这里粘贴的代码实际上可以工作,当我正常加载它时会丢失一些东西。

标签: javascript tinymce


【解决方案1】:

我猜你有时间问题。在 TinyMCE 完全初始化之前,编辑器不是“活动的”。如果您尝试调用:

const editor = global["tinymce"].activeEditor;

...在编辑器完全初始化之前,editor 变量可能是null

WordPress 有多种挂钩可让您调整 TinyMCE 配置,这可能是一种更可靠的方式来做您想做的事情。您绝对可以使用 TinyMCE 配置中的 setup 函数来添加您的 NodeChange 代码。

将其打包到 WordPress 插件中肯定会更容易部署/更新您的解决方案,但这不是必需的。

【讨论】:

  • 很遗憾,编辑器变量不是空的,我登录了那个编辑器,它只是没有得到事件。
  • 实际上我可以将我的代码打包在一个 wordpress 插件中,我不想为此创建 tinymce 插件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多