Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 避免在ckeditor源中出现额外的换行_Javascript_Ckeditor - Fatal编程技术网

Javascript 避免在ckeditor源中出现额外的换行

Javascript 避免在ckeditor源中出现额外的换行,javascript,ckeditor,Javascript,Ckeditor,我希望我是在一个合适的社区里问这个问题 我是一名长期使用fckeditor的用户,现在我正在努力用ckeditor替换fckeditor。这是令人惊讶的容易安装,并开始基本工作 不过,我确实马上遇到了一个问题,我希望这里的人能给我一个指点,让我知道我能做些什么 问题是出现了额外的换行符 附加的第一个屏幕截图是编辑在我的网站上编辑时的样子。 附加的第二个屏幕截图显示了发布后查看结果时的样子(您可以看到所有额外的换行符) 原因-如果我看源代码(第三个屏幕截图),似乎是源代码中ul标签周围的额外行

我希望我是在一个合适的社区里问这个问题

我是一名长期使用fckeditor的用户,现在我正在努力用ckeditor替换fckeditor。这是令人惊讶的容易安装,并开始基本工作

不过,我确实马上遇到了一个问题,我希望这里的人能给我一个指点,让我知道我能做些什么

问题是出现了额外的换行符

附加的第一个屏幕截图是编辑在我的网站上编辑时的样子。

附加的第二个屏幕截图显示了发布后查看结果时的样子(您可以看到所有额外的换行符)

原因-如果我看源代码(第三个屏幕截图),似乎是源代码中ul标签周围的额外行。或者可能是p标签周围的行。我不确定

事实上,如果我在“源”模式下编辑它,删除多余的行并重新提交,最终结果看起来很好

我想知道避免这些额外换行的最佳做法是什么。我修改了设置以添加以下内容:

        CKEDITOR.replace( '%% whichField %%', {
            on: {
                instanceReady: function( ev ) {
                    // Output paragraphs as <p>Text</p>.
                    this.dataProcessor.writer.setRules( 'p', {
                        indent: false,
                        breakBeforeOpen: false,
                        breakAfterOpen: false,
                        breakBeforeClose: false,
                        breakAfterClose: false
                    });
                }
            }
        });
CKEDITOR.replace('%%whichField%%'{
关于:{
InstanceRady:功能(ev){
//将段落输出为文本

。 this.dataProcessor.writer.setRules('p'{ 缩进:假, 在打开之前先打开:错误, breakAfterOpen:false, breakBeforeClose:false, breakAfterClose:错误 }); } } });
这在某种程度上有所帮助,但我仍然在源代码中看到更多的空行,这取决于输入。我想知道是否有一个通用的全面解决方案。就像在上面的设置中不指定“p”,我可以指定更通用的内容吗?或者有更好的实践来处理这种“额外换行”问题吗

谢谢


doug

HTML元素之间的间距不应该有任何区别,只要您以后不使用类似这样的函数来处理此代码,它会将新行字符替换为

我的猜测是,您有很多CKEditor没有生成的

标记,但是它们是由类似于上面描述的函数完成的

为了阻止CKEditor生成新行字符,使您没有任何新行字符可替换,请检查示例以获得灵感。在“获取示例源代码”中点击底部的第一个链接。你会发现一个代码,它有点神奇,可以找到所有要为其设置编写器规则的元素,将
设置为false
,而不是
设置为true
,这应该可以做到:

for ( var e in CKEDITOR.tools.extend( {}, dtd.$nonBodyContent, dtd.$block, dtd.$listItem, dtd.$tableContent ) ) {
    this.dataProcessor.writer.setRules( e, {
        indent: false,
        breakBeforeOpen: false,
        breakAfterOpen: false,
        breakBeforeClose: false,
        breakAfterClose: false
    });
}

如果我是你,我宁愿在将新行字符更改为

之前对其进行一些智能检测,以保持HTML源代码的良好状态。你可能需要检查灵感(我不是该模块的作者)

我不认为UL周围的空行是真正的问题,因为HTML不识别新的行。这就是
TAG所用的。你是如何从编辑器输出数据的?你是使用PHP还是另一个后端,还是使用JavaScript把它附加到正文中?CKDDSTER TEXTARAA是表单的一部分。当它被提交时,textarea的内容被发送到我的服务器,并按原样存储在数据库中。当显示时,将读取和显示数据库的内容。如果我在编辑器中手动进入源模式并删除这些空行,一切都正常。但是,无论在数据库显示期间发生了什么,如果可以,都会有所帮助请不要让ckeditor添加那些额外的空行。我不明白它们为什么会出现。因此我想知道是否有办法不让ckeditor将它们放入源代码中。谢谢。是的,从逻辑上讲,您所说的是有意义的,因为HTML忽略了行距。因此,对于带有额外换行符的消息,实际显示的HTML包含

标记。在本例中,签名未在源代码模式下清除,并且显示的页面上的代码片段看起来像


doug

。因此您是正确的。如果用户不使用ckeditor(例如,他们的浏览器不支持它),则该功能可用否则他们不能输入换行符。但是,如果ckeditor不输入额外的换行符,它将解决所有问题!可能吗?谢谢。是的,可能。检查灵感。在“获取示例源代码”中单击底部的第一个链接,你会发现一段代码,它可以神奇地找到所有要为其设置编写器规则的元素:
for(CKEDITOR.tools.extend({},dtd.$nonBodyContent,dtd.$block,dtd.$listItem,dtd.$tableContent)中的var e){
。很抱歉回复了这么长时间。谢谢!这个例子正是我需要的。它不仅可以完美地抑制我不想要的额外换行符,还为我提供了很多继续操作的线索。如果你想将其作为答案发布,我很乐意将其标记为已回答。特别是,我在这个例子中所做的就是更改tr将值设置为false并注释掉迫使ckeditor在源代码模式下打开的行。我可能会摆弄true/false设置,以获得更清晰的源代码,同时仍然不会干扰换行符。实际上,如果我将breakbeforepopen设置为true,而将其他的breake选项设置为false,那么代码将非常干净、漂亮例如,换行符使代码易读,但没有多余的换行符干扰我的服务器对额外换行符的解释。再次感谢。