javascript – 防止在输入新段落时复制属性?

前端之家收集整理的这篇文章主要介绍了javascript – 防止在输入新段落时复制属性?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在CKEditor中创建新段落时,前一段的属性(样式,类)将被复制到新的段落.有办法防止这种情况吗?

例如,如果我在一个居中的段落中写,并按Enter键创建一个新的段落,我的用户希望新的段落是一个简单的,没有“继承”任何东西从上一个默认情况下.

编辑

我设法得到它(危险地未经测试)使用Reinmar的提示.这是我清理的我希望这有助于别人.如果你们在这里看到一个明显的错误,请告诉我

CKEDITOR.on('instanceCreated',function(e) {
    e.editor.on('key',function(evt) {
        if (evt.data.keyCode === 13) {
            // if we call getStartElement too soon,we get the wrong element
            setTimeout(function () {
                var se = e.editor.getSelection().getStartElement();
                if(se.getName() == "span") {
                    var text = se.getText(); // Store text,we are about to nuke the spans
                    while (se.getName() == "span") { // possible infinite loop danger
                        se = se.getParent();
                    }
                    if (text.length == 0)
                        se.setHtml(" "); // It's important that this is not empty
                    else
                        se.setHtml(text);
                }
                debug(se.getHtml());
                se.removeAttribute("class");
                se.removeAttribute("mycustomattr");
                se.removeAttribute("myothercustomattr");
                window.bla = se; // useful for debugging
            },10);
        }
    });
});

解决方法

最近两天我在想你的问题,我有一个想法.我检查了输入插件代码,最好把它保持不变.相反,您可以在输入键上收听,并且在执行了自定义输入后,您应该从新创建的块中清除样式.

这些方法将会有用:

> editor.on(‘key’,function(evt){evt.data.key …})
> editor.getSelection().getStartElement() – 输入选择开始后将被放置在新创建的块中(内联元素如粗体,下划线等).
> CKEDITOR.dtd.* – 元素集可以帮助您决定哪些元素是内联样式并应该被删除.
> element.isEmptyInlineRemoveable – 你应该删除放置游标的空的内联元素.
> editor.createRange().setStartAt(block,0).select() – 最后你应该将插入符放在正确的位置(在块的开头 – < p> /< div> /< li> /等等.).

不幸的是,你可以看到,这不是一件容易的事情,所以祝你好运:)

猜你在找的JavaScript相关文章