查看: 5178|回复: 0
打印 上一主题 下一主题

使FCKeditor 兼容IE7

[复制链接]
跳转到指定楼层
1#
发表于 2009-2-17 13:11:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
今天一个项目需要使用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:
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:
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:
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了 其他的浏览器我没有测试
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表