【问题标题】:CKeditor justify whole block to left/right/centerCKeditor 将整个块对齐到左/右/中心
【发布时间】:2014-10-05 06:26:27
【问题描述】:

我正在尝试覆盖债权人 4 中的默认对齐左/右/居中,以便他们将整个文本对齐到左/右/居中,而不是单独对齐每一行。我已将以下代码添加到 creditor.config.js 中,一切正常,但我无法在 ckeditor 中更新/刷新新值。看起来 setData() 确实更新了 ckeditor 值,但它在循环中执行,尝试将其包装在 setTimout() 中,但这并没有改变任何东西。试过更新元素,setValue,setHtml...

CKEDITOR.on('instanceReady', function (ev) { ev.editor.on('selectionChange', function () { var text = ev.editor.getData(); text = text.replace(new RegExp('(class="rtecenter")|(class="rteleft") |(class="rteright")','g'),''); text = '<div class="rteleft">'+text+'</div>'; // ev.editor.setData(text); // ev.editor.element.setValue(text); // ev.editor.element.setHtml(text); }); });

【问题讨论】:

  • 我自己刚刚开始使用 CKEditor,所以我不是专家,但是您确定每次选择更改时都想这样做吗?我想这会破坏编辑器,使实际编辑文本变得不可能,因为每次用户点击某个地方时,底层的 HTML 都会改变。 (除了您的代码还有很多其他问题。)您可能想要编写一个插件,在单击按钮时进行修改。 (续)
  • 或者仅仅定义一个新的风格就足够了。 “将整个文本对齐到左/右/中心而不是单独的每一行”到底是什么意思?你能举例说明你想如何修改 HTML 吗?
  • 首先——如果你想做一些“活”的事情,不要改变数据。你需要在 DOM 上工作。第二 - 你为什么不使用样式表(contents.css)?

标签: jquery ckeditor justify


【解决方案1】:

好的,谢谢! 终于搞定了,很简单... 即这是如何在 CKEditor 4 中覆盖“justifycenter”命令:

CKEDITOR.on('instanceReady', function (ev) {

    var editor = ev.editor;
    var overridecmd_justifycenter = new CKEDITOR.command(editor, {
        exec: function(editor){
            var ps = editor.document.$.getElementsByTagName("p");
            for (var i=0; i < ps.length; i++){
                if(ps[i].className.indexOf("rtecenter") < 0) {
                    ps[i].className = "rtecenter";
                }
            } 
        }
    });

    // Replace default button commands with overrides
    ev.editor.commands.justifycenter.exec = overridecmd_justifycenter.exec;

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 2021-06-15
    相关资源
    最近更新 更多