热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » PHP/Perl编程 » 网络编辑器FCKeditor和网络公式编辑器WebEQ结合使用的方法

网络编辑器FCKeditor和网络公式编辑器WebEQ结合使用的方法

论坛链接
  • 网络编辑器FCKeditor和网络公式编辑器WebEQ结合使用的方法
  • 发布时间:2009-03-09 15:31:58    浏览数:5998    发布者:tznktg    设置字体【   
再战FCKeditor。

终极PK FCKeditor。让FCKeditor和WebEQ联姻。

FCKeditor是什么我就不忽悠了,最重要的是忽悠整合WebEQ到FCK里面去。FCK调侃为KFC(喜欢吃吗?),再来个变态强人的解释就是FCK = F*** C** K** 的缩写。哈哈 强吧。

好了不扯了,开始忽悠了!主要的是分为两部分讲,第一部分:如何加入公式编辑器WebEQ这个插件到FCK? WebEQ怎么用?


第二部分PK几下FCK的几个API和几个常见的Error吧?

关于FCK的基本应用和改编见另外一篇 《搞定FCKeditor》(http://blog.csdn.net/meconsea/archive/2006/06/26/835931.aspx

如何将WebEQ插入到FCK,WebEQ怎么用?

很简单改动几个小地方而已?注意:因为它支持多国语言,我只改了zh_cn.js.因为我只会汉语,爱国吧? 哈哈 :) 还有我只改了IE的。FF就饶了我吧!
begin: 好了注意听吹了。
1> 首先将fck_expression文件夹拷贝到FCKeditor_HOME/editor/dialog/下面。fck_expression里面的内容包括fck_expression.html和WebEQApplet.jar.两个文件夹。注:WebEQApplet.jar的路径很重要啊。
fck_expression.html的部分代码如下:
/**
* @author meconsea
* @Email:meconsea@hotmail.com
* @description:该函数只用于支持MathPlayer的。
*/
<script type="text/javascript">
//采用FCK的API
var oEditor = window.parent.InnerDialogLoaded() ;

function check() {

var mml_txt = document.myApplet.getPackedMathML();
//为了支持MP 则进行了替换。
//如果直接采用WebEQ来解析的话部分代码如下:

mml_txt += "";
mml_txt = mml_txt.replace(/\</g,"<mml:");
mml_txt = mml_txt.replace(/\<mml:\//g,"</mml:");
mml_txt = mml_txt.replace(/\'/g,"");
//采用WebEQ解析代码如下:
/**
var head=" <applet archive=\"WebEQApplet.jar\" codebase=\".\" code=\"webeq3.ViewerControl.class\" width=\"100\" height=\"30\" align=\"middle\"><param name=\"useslibrary\" value=\"WebEQApplet\"> <param name=\"useslibrarycodebase\" value=\"WebEQApplet.cab\"> <param name=\"useslibraryversion\" value=\"3,6,0,0\"><param name=\"eq\" value=\" ";
var tail=" \"><param name=\"foreground\" value=\"black\"><param name=\"background\" value=\"white\"><param name=\"selection\" value=\"true\" ><param name=\"parser\" value=\"mathml\"><param name=\"size\" value=\"12\"></applet>";
var dis_mml = head+mml_txt+tail;
oEditor.FCK.InsertHtml( dis_mml || "" ) ;


*/
//WebEQ解析代码有些乱,凑合着看吧!

oEditor.FCK.InsertHtml( mml_txt || "" ) ;
window.parent.Cancel() ;
}
</script>

2>文件拷完了,就要改那乱七八糟的图片和JS了。


发现FCK中的图片是放在一个文件里面了吧?没发现就好好看看skins/office2003.silver.default下面的fck_strip.gif了。


增加一个编辑器的图标进去,注意高度啊。要不就的FCK里面就产生视觉冲突了!相信吗?不相信看看下面需要改的JS就知道了。


2.1先给他在FCKConfig.ToolbarSets['..']安个家。在你Toolbar里面放入'Expression'.放哪里我就不管了。


2.2支持下汉语吧修改下zh_cn.js.


Expression : "插入公式", //鼠标移上去的时候来个提示,友好些嘛。
DlgExpressionTitle : "公式编辑器",//增加个名字啊,不能当无名氏吧


2.3剩下的就是修改fckeditorcode_ie.js.(最好看看源代码,要是直接看FCK处理过的这个js,嘿嘿 。。。没有注释 没有换行。我这里对不起FF了,想支持也直接改fckeditorcode_gecko.js);


(1) 先改FCKRegexLib.NamedCommands。加上Expression就可以了。
(2) 再处理下FCKCommands.GetCommand 就行了。我就不写代码了。照着葫芦画个瓢就行。就是case一个Expression就行。(不是用嘴啊,记得switch()中的case啊。)
(3) 再处理下FCKToolbarItems.GetItem函数就可以了。也是case下。这里和图片的大小有关啊。嘿嘿 下面的67很重要。

'Expression',FCKLang.Expression,null,null,false,true,67);

好了,让WebEQ和FCK联姻就这么简单了。其实思路是一样的。让EQweb和FCK联姻也行啊。哈哈 :) 庆祝下 看看效果。





怎么样 效果不错吧?哈哈!

下面进行第二个忽悠了!
PK几个FCK的几个常用的API
1.获取编辑区域的内容:
获取编辑区域的内容有两个函数分别是:
GetInnerHTML() 和 GetContents();

根据实际业务,我稍作修改了这几个函数。
function GetInnerHTML(fck_instance_name){
var oEditor = FCKeditorAPI.GetInstance(fck_instance_name) ;
return oEditor.EditorDocument.body.innerHTML;
}
function GetContents(fck_instance_name)

{
var oEditor = FCKeditorAPI.GetInstance(fck_instance_name) ;

return oEditor.GetXHTML( true ) ;

}

获取内容尽量采用第二个方法,因为假如里面插入了Flash。第一个方法就无法获得Flash的标签,而是给你替换了Image。

还有很多我就不一一PK了。
看看他Source中的实例吧!

最后我估计最令人头疼的就是他这个字符集问题。
假如Web应用采用的是UTF-8下面的可以不看了。
假如你没有碰到上传文件的路径和文件名是中文的Go To end
解决他的中文路径和文件名问题最直接有效的方法就是改掉他的SimpleUploaderServlet。思路就是改掉他的上传后的文件名,采用随机数或时间等等重命名文件。然后再把这个路径返回到页面。就行了。
部分代码如下:
注释掉
/**
String ext=getExtension(fileName);
File pathToSave=new File(currentDirPath,fileName);
fileUrl=currentPath+"/"+fileName;
**/
我的更改如下:
//更改路径支持中文
String ext=getExtension(fileName);//后缀名
String random=String.valueOf((Math.abs((new Random()).nextInt()) % 10000));//生成随机数
String namebydate=String.valueOf(Calendar.getInstance().getTime().getTime())+ random+"."+ext;
File pathToSave=new File(currentDirPath,namebydate);
fileUrl=currentPath+"/"+namebydate;//返回上传后的文件路径

好了 改奏凯歌了。 一切oK。 联姻完毕。
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理