现在试过这个,但没有运气
editor.addCss(this.path + 'tabber.css');
editor.document.appendStyleSheet(this.path + 'tabber.css');
完整代码
(function () {
CKEDITOR.plugins.add('tabber', {
init: function (editor) {
editor.ui.addButton('addTab', {
command: 'addTab',
icon: this.path + 'icons/tabber.png',
label: Drupal.t('Insert tabs')
});
editor.addCss(this.path + 'tabber.css');
editor.document.appendStyleSheet(this.path + 'tabber.css');
editor.addCommand('addTab', {
exec: function (editor) {
editor.insertHtml('<dl>' +
'<dt>Tab title 1</dt>' +
'<dd><p>Tab content 1.</p></dd>' +
'<dt>Tab title 2</dt>' +
'<dd><p>Tab content 2.</p></dd>' +
'</dl>');
}
});
}
});
})();
解决方案(感谢指出正确方向的答案)在init
中 var cssPath = this.path + 'tabber.css';
editor.on('instanceReady', function () {
this.document.appendStyleSheet(cssPath);
});
答案 0 :(得分:10)
CKEDITOR.addCss
接受字符串作为参数,因此无法在那里传递任何路径。 CKEDITOR.document.appendStyleSheet
是正确的(fiddle):
CKEDITOR.replace( 'editor', {
on: {
instanceReady: function() {
this.document.appendStyleSheet( 'http://path.to.your.css' );
}
}
} );
请确保:
allowedContent
。我猜你也可能会发现CKEDITOR.getUrl很有用。
答案 1 :(得分:0)
将以下内容添加到 config.js :
config.contentsCss = [CKEDITOR.getUrl('contents.css'),'/ path / to / your / css'];
这会将您的CSS文件附加到默认的CKEditor样式。这个方法优于instanceReady的优点是(至少对我来说)当用户从Source切换模式到Visual时,instanceReady事件不会重新触发,也不会重新应用自定义样式。
答案 2 :(得分:0)
如果您使用的是CKEditor 4.4或更高版本,则可以使用
editor.addContentsCss( pluginDirectory + 'styles/example.css' );
如果你使用CKEditor这样的旧版本,你应该使用:
beforeInit: function(editor) {
var ccss = CKEDITOR.config.contentsCss;
if(typeof ccss == 'string'){
ccss = [ccss];
}
ccss.push('/css/style.css');
CKEDITOR.config.contentsCss = ccss;
}
创建功能时,请查看此故障单: https://dev.ckeditor.com/ticket/11532