网站内容编辑器(基于Javascript取和设FCKeditor值的FCK编辑器实例:)
优采云 发布时间: 2022-03-09 17:22网站内容编辑器(基于Javascript取和设FCKeditor值的FCK编辑器实例:)
形式为:
复制代码代码如下:
varoEditor=FCKeditorAPI.GetInstance('content');
varcontent=oEditor.GetXHTML(true);
****************************************************** **
使用Javascript来获取和设置FCKeditor的值也很简单,如下:
复制代码代码如下:
// 获取编辑器中的 HTML 内容
函数 getEditorHTMLContents(EditorName) {
var oEditor = FCKeditorAPI.GetInstance(EditorName);
返回(oEditor.GetXHTML(真));
}
// 获取编辑器中的文本内容
函数 getEditorTextContents(EditorName) {
var oEditor = FCKeditorAPI.GetInstance(EditorName);
返回(oEditor.EditorDocument.body.innerText);
}
// 在编辑器中设置内容
功能 SetEditorContents(EditorName, ContentStr) {
var oEditor = FCKeditorAPI.GetInstance(EditorName) ;
oEditor.SetHTML(ContentStr) ;
}
FCKeditorAPI 是 FCKeditor 加载后注册的全局对象。使用它,我们可以在编辑器上完成各种操作。
在当前页面获取 FCK 编辑器的实例:
var Editor = FCKeditorAPI.GetInstance('InstanceName');
从 FCK Editor 弹出窗口中获取 FCK Editor 实例:
var Editor = window.parent.InnerDialogLoaded().FCK;
从框架页面的子框架中获取其他子框架的FCK编辑器实例:
var Editor = window.FrameName.FCKeditorAPI.GetInstance('InstanceName');
从页面弹窗中获取父窗口的FCK编辑器实例:
var Editor = opener.FCKeditorAPI.GetInstance('InstanceName');
获取 FCK 编辑器的内容:
oEditor.GetXHTML(格式化);// 格式化为:true|false,表示是否提取为HTML格式
也提供:
oEditor.GetXHTML();
设置FCK编辑器的内容:
oEditor.SetHTML("内容", false); // 第二个参数为:true|false,是否以所见即所得的方式设置其内容。此方法常用于“设置初始值”或“表单重置”操作。
将内容插入 FCK 编辑器:
oEditor.InsertHtml("html"); // “html”是 HTML 文本
检查 FCK 编辑器内容是否已更改:
oEditor.IsDirty();
要在 FCK 编辑器之外调用 FCK 编辑器工具栏命令:
命令列表如下:
DocProps, 模板, 链接, 取消链接, 锚点, BulletedList, NumberedList, 关于, 查找, 替换, 图像, Flash, SpecialChar, 笑脸, 表, TableProp, TableCellProp, UniversalKey, 样式, FontName, FontSize, FontFormat, 源代码, 预览, 保存, NewPage,PageBreak,TextColor,BGColor,PasteText,PasteWord,TableInsertRow,TableDeleteRows,TableInsertColumn,TableDeleteColumns,TableInsertCell,TableDeleteCells,TableMergeCells,TableSplitCell,TableDelete,表单,复选框,单选,TextField,Textarea,HiddenField,按钮,选择,ImageButton,拼写检查, FitWindow,撤消,重做
使用方法如下:
oEditor.Commands.GetCommand('FitWindow').Execute();
= FCKConfig.BasePath + '插件/'
// FCKConfig.Plugins.Add( 'placeholder', 'en,it' ) ;
去掉 // 后,相当于增加了占位符的插件功能。fckeditor的插件文件全部分类放在/editor/plugins/文件夹下的文件夹中。对于fckeditor2.0,里面有两个文件夹,也就是有两个官方插件。占位符文件夹是我们刚刚添加的。主要用于匹配多参数或单参数自定义标签。这在制作编辑模板时非常有用。如果你想看具体的例子的话,可以下载一个cms这个系统查看学习,另外一个文件夹tablecommands,用于编辑器中的表格编辑。当然,如果你想自己制作其他用途的插件,只要按照fckeidtor插件的制作规则,放在/editor/plugins/下,然后添加FCKConfig.Plugins.Add(' fckeidtor.js 中的插件 Name',',lang,lang'); 正好。
第二部分,如何使编辑工具栏在打开编辑器时不出现,只在点击“扩展工具栏”时出现?很简单,FCKeditor本身就提供了这个功能,打开fckconfig.js,找到
FCKConfig.ToolbarStartExpanded = true;
改成
FCKConfig.ToolbarStartExpanded = false;
而已!
第三部分,使用自己的 emoji 图标,同样打开 fckcofnig.js 到底部
复制代码代码如下:
FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/' ;
FCKConfig.SmileyImages = ['regular_smile.gif','sad_smile.gif','wink_smile.gif'];
FCKConfig.SmileyColumns = 8;
FCKConfig.SmileyWindowWidth = 320;
FCKConfig.SmileyWindowHeight = 240;
上面这段是我修改的。为了防止这篇文章的版面过于宽泛,我把FCKConfig.SmileyImages这一行改成了只有三个表情。
第一行当然是emoji路径的设置,第二行是相关emoji图标的文件名列表,第三行是指弹出的emoji每行的emoji个数添加窗口。以下两个参数是弹出的表情符号。状态窗口的宽度和高度。
第四部分,文件上传管理部分
这部分应该是大家最关心的吧。上一篇文章简单讲了如何修改和上传文件以及使用fckeidtor2.0提供的快速上传功能。下面继续深入讲解上传功能。
FCKConfig.LinkBrowser = true;
FCKConfig.ImageBrowser = true;
FCKConfig.FlashBrowser = true ; 在fckconfig.js中找到了这三个语句,这三个语句没有连接,但是我这里集中了,设置为true表示允许使用fckeditor浏览服务器端的文件图片和flash等。这个功能插入图片时,通过弹出窗口中的“浏览服务器”按钮反映出来。如果你的编辑器只供自己使用或者只用于后台管理,这个功能无疑是非常有用的,因为它可以让你直观的上传文件到服务器。但是如果你的系统是用于前端用户或者博客之类的系统,这个安全风险会很大。所以我们总是把它设置为false;如下
FCKConfig.LinkBrowser = 假;
FCKConfig.ImageBrowser = false;
FCKConfig.FlashBrowser = 假;
这样,我们只有快速上传可用,好的!接下来我们修改一下,同样以asp为例,输入/editor/filemanager/upload/asp/打开config.asp,修改
ConfigUserFilesPath = "/UserFiles/" 这个设置是上传文件的通用目录,我这里就不改了,大家自己改
好的,再次打开这个目录下的upload.asp文件,找到下面这段
复制代码代码如下:
暗淡的资源类型
如果 ( Request.QueryString("Type") "" ) 那么
resourceType = Request.QueryString("类型")
别的
资源类型 = "文件"
万一
然后在之后添加
ConfigUserFilesPath = ConfigUserFilesPath & resourceType &"/"& Year(Date()) &"/"& Month(Date()) &"/"
这种情况下,上传的文件会进入文件夹“/userfiles/文件类型(如图片或文件或flash)/年/月/”,这个设置对于单个用户来说已经足够了,如果要给多个-用户系统,像这样改变它
ConfigUserFilesPath = ConfigUserFilesPath & Session("username") & resourceType &"/"& Year(Date()) &"/"& Month(Date()) &"/"
这样,上传的文件进入“/userfiles/用户目录/文件类型/年/月/”。当然,如果你不想这样安排,也可以改成别的。例如,用户目录更深一层。这里的 Session("username") 请根据需要修改或替换。
上传的目录设置好了,但是上传者不会自己创建这些文件夹。如果不存在,则上传不会成功,那么我们要按照上面上传路径的要求,递归生成目录。
找到这一段
复制代码代码如下:
Dim sServerDir
sServerDir = Server.MapPath( ConfigUserFilesPath )
如果(右(sServerDir,1)“\”)那么
sServerDir = sServerDir & "\"
万一
把这两行放在它下面
暗淡的FSO
设置 oFSO = Server.CreateObject("Scripting.FileSystemObject")
替换为以下代码
复制代码代码如下:
暗淡 arrPath、strTmpPath、intRow
strTmpPath = ""
arrPath = 拆分(sServerDir,“\”)
暗淡的FSO
设置 oFSO = Server.CreateObject("Scripting.FileSystemObject")
对于 intRow = 0 到 Ubound(arrPath)
strTmpPath = strTmpPath & arrPath(intRow) & "\"
如果 oFSO.folderExists(strTmpPath)=false 那么
oFSO.CreateFolder(strTmpPath)
万一
下一个
使用这段代码生成你想要的文件夹,上传时会自动生成。
好了,上传文件的修改可以暂时停止了。但是对于中文用户来说还是有这样一个问题,就是fckeditor的文件上传默认不改名,也不支持中文文件名,所以在上传的文件会变成不可读的文件如“ .jpg”,然后就会有同名的文件。当然同名没什么,因为fckeditor会自动改名,会在文件名后面加上(1)。这个是用来识别的。不过我们平时的习惯是让程序自动生成唯一的文件名
刚才的代码下面是
' 获取上传的文件名。
sFileName = oUploader.File("NewFile").Name
看清楚了,这是文件名,我们改一下吧,当然要有生成文件名的函数,改成如下
复制代码代码如下:
'//获取唯一的序列号
公共函数 GetNewID()
昏暗的ranNum
暗淡dtNow
随机化
dtNow=现在()
ranNum=int(90000*rnd)+10000
GetNewID=year(dtNow) & right("0" & 月(dtNow),2) & right("0" & day(dtNow),2) & right("0" & 小时(dtNow) ),2) & 右("0" & 分(dtNow),2) & 右("0" & 秒(dtNow),2) & 随机数
结束功能
' 获取上传的文件名。
sFileName = GetNewID() &"."& split(oUploader.File( "NewFile" ).Name,".")(1)
这样上传的文件会自动重命名,生成一个文件名如236365.jpg,这是一个由年、月、日、时、分、秒和三个随机数组成的文件名。