fck 再ie7下的兼容收藏

今天一个项目需要使用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 ) ;
好我们现在把它修改成


CODE:[Copy to clipboard]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 ) 这个函数
然后把这个函数修改成


CODE:[Copy to clipboard]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 ) 这个函数
修改成


CODE:[Copy to clipboard]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了 其他的浏览器我没有测试



'引用 自http://blog.csdn.net/sanshi0815/archive/2008/01/29/2071565.aspx
感谢作者 sanshi0815
邮件 sanshi0815@tom.com  


文章来自: 本站原创
引用通告地址: http://www.is21.cn/trackback.asp?tbID=561
Tags:
评论: 0 | 引用: 0 | 查看次数: 2068
发表评论
你没有权限发表留言!