如何将占位符属性添加到 CKEditor 的实例?

How do I add a placeholder attribute to an instance of CKEditor?

现在,使用 Alfonso's plugin,我可以在 config.js 中添加占位符属性。但是,由于我要添加到 config.js,这意味着所有实例都将具有相同的占位符文本,对吗?

好吧,我不希望我的 ckeditor 的所有实例都具有相同的占位符文本,因为我还注意到他还说:

The value can be set in the configuration or as an attribute of the replaced element

我认为这意味着我们可以将 "Type something..." 作为 ckeditor1 的占位符文本,将 "Blabla..." 作为 ckeditor2 的占位符文本。我怎么做?或者他不是这个意思?

我尝试了几种方法,包括

    var ckeditor = CKEDITOR.replace('ckeditor1');
    ckeditor.placeholder = 'Type sometheing....';

    var config = [];
    config['placeholder'] = 'some value'; //or config = [{placeholder:'some value'}]
    CKEDITOR.replace("myeditor" , config );

在该特定页面内但无济于事...我还清除了缓存。

根据阿方索的网站,正确的方法是:

config['placeholder'] = 'some value';
CKEDITOR.replace("myeditor" , config );

我指的是属性:

<textarea name="editor" placeholder="Type here..."></textarea>

关于你的其他方法,配置是一个对象,所以这应该有效:

var config = {};
config.placeholder = 'some value'; 
CKEDITOR.replace("myeditor" , config );

CKEditor 对象有一个名为 instances 的属性,它存储所有实例。要保存一个实例,您只需将它添加到 instances 散列。

var someDomElement = X;
CKEDITOR.replace(someDomElement);
CKEDITOR.instances[someDomElementId];

var someOtherDomElement = Y;
CKEDITOR.replace(someOtherDomElement);
CKEDITOR.instances[someOtherDomElementId];

现在你有两个实例。您现在可以使用标准 API.

设置或执行任何 to/with 实例
CKEDITOR.instances[someDomElementId].CKEDITOR_API()

可能对其他人有帮助的快捷方式。我也很难让这个插件工作。原因是我使用的是旧版本的插件。我从这里下载它: https://ckeditor.com/cke4/addon/confighelper 并且该页面可能也会让其他人感到困惑。

几乎所有来自 CKEditor 的插件都在下载列表的顶部显示最新版本。此外,当单击 "Download" 按钮时,它通常会下载最新版本的插件。这个插件不是这种情况。 "Download" 获取最旧的版本,最旧的版本也列在列表的第一位。

一个"Gotcha"我觉得值得一提

placeholdertext 插件似乎是一个不错的解决方案。与 ConfigHelper 插件相反,占位符文本不会进入 undo/redo 历史记录。