zoukankan      html  css  js  c++  java
  • fckeditor只读状态下回车仍可输入的BUG

      我对Fckeditor设置为不可编辑状态,但仍可以通过ENTER或SHIFT+ENTER产生p或者br标签。如下是fckeditor设置为只读状态的代码。

    <script type="text/javascript">
    
    window.onload = function()
    {
        var sBasePath = document.location.href.substring(0,document.location.href.lastIndexOf('_samples')) ;
    
        var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
        oFCKeditor.Config["AutoHeight"] = false;
        oFCKeditor.Config['ToolBarLess'] = 'Basic';
        oFCKeditor.Config["ToolbarStartExpanded"] = true;
        oFCKeditor.ToolbarSet = 'ComposeEmailReadOnly';
        //oFCKeditor.ToolbarSet = 'Advance';
        oFCKeditor.BasePath    = sBasePath ;
        oFCKeditor.ReplaceTextarea() ;
    }
    function FCKeditor_OnComplete( editor ) {
        editor.EditorDocument.body.contentEditable = false;
        editor.EditMode=FCK_EDITMODE_SOURCE;
        editor.ToolbarSet.RefreshModeState();
        editor.EditMode=FCK_EDITMODE_WYSIWYG;
        editor.ToolbarSet.RefreshModeState();
    } 
    </script>

      查看FCK的配置,并没有发现有方法可以解决这一问题。于是只好硬着头皮修改下源码。

    大概修改如下,修改fckenterkey.js文件。请看红色部分。

    var FCKEnterKey = function( targetWindow, enterMode, shiftEnterMode, tabSpaces )
    {
        this.Window            = targetWindow ;
        this.EnterMode        = enterMode || 'p' ;
        this.ShiftEnterMode    = shiftEnterMode || 'br' ;
    
        .........
    
    FCKEnterKey.prototype.DoEnter = function( mode, hasShift )
    {
        // Save an undo snapshot before doing anything
        FCKUndo.SaveUndoStep() ;
    
        this._HasShift = ( hasShift === true ) ;
    
        var parentElement = FCKSelection.GetParentElement() ;
        var parentPath = new FCKElementPath( parentElement ) ;
        var sMode = mode || this.EnterMode ;  

        if (sMode == '')  return;

    if ( sMode == 'br' || parentPath.Block && parentPath.Block.tagName.toLowerCase() == 'pre' )
            return this._ExecuteEnterBr() ;
        else
            return this._ExecuteEnterBlock( sMode ) ;
    }
    
    ...................

      修改后,使用js压缩工具进行压缩并更改到fckeditorcode_XXX.js文件中即可。

      然后使用时在只读状态的编辑吕配置中加入如下:

    editor.Config["EnterMode"] = '';
    editor.Config["ShiftEnterMode"] = '';

      个人水平有限,这并不是个很好的办法,但可以解决到这个bug的问题。

      欢迎拍砖!!!

     

  • 相关阅读:
    The Ubuntu version detected is too old (< 10.04). Please refer to VMware KB article 2147454 to learn how to obtain and install VMware Tools on this system
    Metasploit渗透测试指南:修订版 勘误
    栈溢出基础
    修改peda颜色
    linux 修改文件夹颜色 终端颜色
    fadetop bing wallpaper
    odoo 去除动作菜单的删除按钮
    crontab详解
    odoo 创建初始数据库 切换当前数据库
    24 单链表的遍历与优化
  • 原文地址:https://www.cnblogs.com/zhangchaozheng/p/2607840.html
Copyright © 2011-2022 走看看