fck 再ie7下的兼容

心痛的fck

今天一个项目需要使用fck,我按照平时的fck修改的方式对fck做了平常的修改,使用的版本是2.4.2 这个版本由于使用的比较多了,一直也没发现什么问题,也就没做什么修改。最近升级了浏览器使用了ie7,又装了一个sohu的输入法,然后很正常的使用,发现fck再浏览服务器图片的时候出现了一个js错误,说是ie不支持window.open了,我想这不能啊!又继续测试,还是一样,没办法了baidu吧,没又,google吧,也没找到好的解决办法,看到了一个跟我发生一样错误的人,给fck提交了一个bug,看样子是fck没解决,然后我去fck的官方站去测试问题依然,看来是fck还没有解决这个问题。自动动手吧,又查啊,找啊,最后找到了一个方法 也就是修改fck的配置文件,FCKConfig.PreserveSessionOnFileBrowser = false ; 把这个给修改成true,这个到是可以,再ie6跟ff下都没问题,但是ie7很不听话,虽然可以用,但是弹出的那个窗口总又提示,这样对用户使用上不好,用户根本不管是什么或者害怕根本就不用啊,那这个fck就功能不全了!太残酷了,继续追踪代码,
终于找到了解决办法,自己动手进行了修改,说不定这是全球第一份支持fck再ie7下的本版,哈哈!

麻烦先去下个最新的版本 2.5.1 然后开始进行修改

现在说下修改办法
步骤一
找到 fckeditor/editor/dialog/common/fck_dialog_common.js 这个文件
找到 OpenFileBrowser 这个函数,再这个函数的结束地方 else 里有一行代码 window.open( url, 'FCKBrowseWindow', sOptions ) ;
好我们现在把它修改成

else{
                //sanshi edit 2008-1-29
                var iev = navigator.userAgent.substring(27,31);
                if(iev=="IE 7" && !oEditor.FCKConfig.PreserveSessionOnFileBrowser)
                {
                        selectFile=showModalDialog(url);
                        SetUrl(selectFile);
                }else{
                        window.open( url, 'FCKBrowseWindow', sOptions ) ;
                }
        }
继续
第2步
找到D:/wamp/www/newcms/drivers/fckeditor/editor/filemanager/browser/default/frmresourceslist.html
打开后找到function OpenFile( fileUrl ) 这个函数
然后把这个函数修改成

function OpenFile( fileUrl )
{
        //sanshi edit 2008-1-29
        var iev = navigator.userAgent.substring(27,31);
        if(iev=="IE 7")
        {
                window.returnValue=encodeURI( fileUrl );
                self.close();
        }else{
                window.top.opener.SetUrl( encodeURI( fileUrl ) ) ;
                window.top.close() ;
                window.top.opener.focus() ;
        }
}
这样修改完了,ie7的兼容性就算处理完了
但是这个版本再ff下,图片确定后,不会自己关闭打开的框,好我们把这个小问题也修改下
打开fckeditor/editor/fckdialog.html 这个文件
找到 function Cancel( dontFireChange ) 这个函数
修改成

function Cancel( dontFireChange )
{
        if ( !dontFireChange && !window.dialogArguments.Editor.FCK.EditMode )
        {
                // All dialog windows, by default, will fire the "OnSelectionChange"
                // event, no matter the Ok or Cancel button has been pressed.
                window.dialogArguments.Editor.FCK.Events.FireEvent( 'OnSelectionChange' ) ;
        }
        windowclose();
}
//sanshi edit 2008-1-29
function windowclose(){    window.open('','_parent','');    window.close();}
到现在我们的fck就能正常的兼容ie7 ie6,跟ff了 其他的浏览器我没有测试
作者 sanshi0815
邮件 sanshi0815@tom.com
  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值