CKEditor - 获取更改的内容和周围的HTML标记

时间:2016-06-21 12:24:29

标签: javascript plugins ckeditor

我正在为Drupal编写自己的插件。我在API中检查了以下用于更改事件的代码:

  editor.on('change', function (evt) {
    console.log(this.getData());
  });

有了它,我可以在更改时看到编辑器中的所有数据。我的内容由自定义HTML标记(具有一些数据属性)构成。我的问题是,如果用户写了一些内容,我怎样才能获得最接近的标签 - 因此添加一个已被更改的数据属性?

我还需要某种定时器/延迟,不要在每次按键时触发,我想?

1 个答案:

答案 0 :(得分:0)

您展示的代码是jQuery代码。你已经在编辑器上创建了一个触发change事件的函数。每次用户在编辑器中更改内容时都会触发。为了避免这种情况,你可以做这样的事情:

在父范围内(在您的函数之前)添加一个全局变量:

var editorTimer = null;

然后将您的功能更改为:

if (editorTimer.length) {
    clearTimeout(editorTimer);
}
editorTimer = setTimeout(function () {
    console.log(this.getData());
}, 1000);

它将清除最后一个计时器,然后在每次更改后等待1000ms(1s)以激活内部功能。 如果用户不会为1更改任何内容,则会调用该函数。

现在 - 你需要准备你的函数并将console.log()更改为有效的东西。要查找标签,请使用jQuery选择器: http://api.jquery.com/category/selectors/

喜欢.closest()或.parents()或.find(),这取决于你愿意做什么。