CKEditor转换输入源

时间:2012-07-29 17:05:58

标签: javascript html ckeditor

我的网站上有CKEditor。当我将此代码输入源窗口时:

<ul class="active">
   <li>
        <a href="#">
            <img align="" alt="" border="0" src="/media/1.png" /> 
            <h3>Headline</h3>
            <span class="prec">from</span> 
            <span class="price">1</span>
        </a>
   </li>
</ul>

然后当我点击“保存”时,它会被格式化为:

<ul class="active">
    <li>
        <a href="#"><img align="" alt="" border="0" src="/media/1.png" /> </a>
        <h3>
            <a href="#">Headline</a></h3>
        <a href="#"><span class="prec">from</span> <span class="price">1</span> </a></li>
</ul>

是否可以完全关闭代码重新格式化?它还会更改其他一些html代码(例如,页面上的flash)

有人可以给我一些建议吗?

2 个答案:

答案 0 :(得分:0)

formatting the HTML output的文档。 CKEDITOR.htmlWriter处理源HTML的编写。其选项在文档中进行了总结。例如,你可以打开<a>这样的内容:

writer.setRules( 'a', {breakAfterOpen : true, breakBeforeClose: true} );

这样你至少应该能够让编辑器不要把你所有的东西放在一行中。

但是,我认为您正在寻找类似sourceFormatting: none的内容,但我怀疑这是否存在。编辑器需要解析您的HTML以进行验证和WYSIWYG功能,因此它似乎始终在保存时进行评估,无格式存储并在打开时在源窗口中重写。

another question中,人们尝试(误)使用protectedSource来保持CKEditor的HTML,但我没有尝试过。

答案 1 :(得分:0)

您的部分问题是您的输入HTML无效。 <h3>是块级元素;它不能出现在像<a>这样的内联元素中。浏览器无法显示此无效HTML,因此它将其重新格式化为有效(通过复制<a>标记),并且CKEditor正在进行此操作。

在空格和换行符周围进行了一些额外的重新格式化,但是您看到的大多数更改都与此语法问题有关。