CKEditor - 获取更改的内容和周围的 HTML 标签
CKEditor - get changed content and surrounding HTML tags
我正在为 Drupal 编写自己的插件。我检查了 API 中的以下代码以了解更改事件:
editor.on('change', function (evt) {
console.log(this.getData());
});
有了它,我可以在编辑器中看到更改时的所有数据。我的内容使用自定义 HTML 标签(具有一些数据属性)构建。我的问题是,如果用户写了一些内容,我怎样才能获得最接近的标签 - 并因此添加一个数据属性,它已被更改?
我想我还需要某种 timer/delay,以免在每次击键时触发它?
您显示的代码是 jQuery 代码。您已经创建了一个在编辑器上发生更改事件时触发的函数。每当用户在编辑器中更改某些内容时,它都会触发。为了避免这种情况,你可以做这样的事情:
在父作用域添加一个全局变量(在你的函数之前):
var editorTimer = null;
然后将函数更改为:
if (editorTimer.length) {
clearTimeout(editorTimer);
}
editorTimer = setTimeout(function () {
console.log(this.getData());
}, 1000);
它会清除最后一个计时器,然后在每次更改后等待 1000 毫秒(1 秒)以触发内部功能。
如果用户在 1 秒内不更改任何内容,将调用该函数。
现在 - 您需要准备您的函数并将 console.log() 更改为有效的函数。要查找标签,请使用 jQuery 选择器:
http://api.jquery.com/category/selectors/
喜欢 .closest() 或 .parents() 或 .find() 这取决于你愿意做什么。
我正在为 Drupal 编写自己的插件。我检查了 API 中的以下代码以了解更改事件:
editor.on('change', function (evt) {
console.log(this.getData());
});
有了它,我可以在编辑器中看到更改时的所有数据。我的内容使用自定义 HTML 标签(具有一些数据属性)构建。我的问题是,如果用户写了一些内容,我怎样才能获得最接近的标签 - 并因此添加一个数据属性,它已被更改?
我想我还需要某种 timer/delay,以免在每次击键时触发它?
您显示的代码是 jQuery 代码。您已经创建了一个在编辑器上发生更改事件时触发的函数。每当用户在编辑器中更改某些内容时,它都会触发。为了避免这种情况,你可以做这样的事情:
在父作用域添加一个全局变量(在你的函数之前):
var editorTimer = null;
然后将函数更改为:
if (editorTimer.length) {
clearTimeout(editorTimer);
}
editorTimer = setTimeout(function () {
console.log(this.getData());
}, 1000);
它会清除最后一个计时器,然后在每次更改后等待 1000 毫秒(1 秒)以触发内部功能。 如果用户在 1 秒内不更改任何内容,将调用该函数。
现在 - 您需要准备您的函数并将 console.log() 更改为有效的函数。要查找标签,请使用 jQuery 选择器: http://api.jquery.com/category/selectors/
喜欢 .closest() 或 .parents() 或 .find() 这取决于你愿意做什么。