原文地址:CKEditor与CKFinder学习--自定义界面及按钮事件捕获  讨厌CSDN的广告,吃香太难看!

效果图

界面操作图

原始界面

调整后的界面(删除了flush,表单元素等)

该界面的皮肤是bootstrap的皮肤

事件操作图

获取界面上保存按钮点击事件效果

用js操作ckeditor控制的textarea

自定义界面

ckeditor默认使用moono皮肤
如果想更改ckeditor的皮肤,去ckeditor的网站下载相应的皮肤。

皮肤更换

去ckeditor的关网选一个你喜欢的皮肤,然后下载下来。
http://ckeditor.com/addons/skins/all

以bootstrap为例,点击Download进行下载



根据提示信息,将下载的文件进行解压,并放在项目中ckeditor目录的skins目录下


然后配置config.js,使其引用bootstrap的皮肤

config.js

/**
* @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or http://ckeditor.com/license
*/ CKEDITOR.editorConfig = function( config ) {
// Define changes to default configuration here. For example:
// config.language = 'fr';
// config.uiColor = '#AADC6E';
config.skin = 'bootstrapck';
};

如果想使用其他的皮肤,跟上面的操作一样,只需把

config.skin = 'bootstrapck';

换成下载的那个即可

界面选择

ckeditor的samples目录下提供了一个示例,点击TOOLBAR CONFIGURATOR就可以自定义界面了

进入界面选择和排序页面

定制好自己的界面后,点击右侧的Get toolbar config

得到自定义界面的js


将其拷贝到config.js中,注意保存自己之前的配置(皮肤,高度等)

隐藏按钮

ckeditor与ckfinder整合之后再进行图文混排的时候选择图片时可以浏览服务器上的图片资源


用户可以删除,重命名,这也会影响到其他页面对该图片的引用,不安全。
可以将浏览服务器按钮隐藏了。

在选择图片的时候有两处有浏览服务器的按钮


所以需要修改两处

打开ckeditor/plugins/image/dialogs/下的image.js


查找browseServer,找到第一次出现的位置

label:d.lang.common.browseServer,hidden:!0,

修改其为

label:d.lang.common.browseServer,style:"display:none",hidden:!0,


第一个浏览服务器按钮就被隐藏了

再搜索image.js,搜索filebrowser

url:d.config.filebrowserImageBrowseLinkUrl},style:"float:right",hidden:!0,

将其改为

url:d.config.filebrowserImageBrowseLinkUrl},style:"float:right;display:none",hidden:!0,

这样两个浏览服务器的按钮就被隐藏了,用户只能每次上传图片来进行图文混排。

参考文献

http://blog.163.com/zjc_8886/blog/static/2408175201011222590967/

界面元素操作

ckeditor为界面提供了许多按钮,有源代码,保存,新建,打印等等。
有时候我们需要自己操作这些按钮的事件。ckeditor也为我们提供了相应的api
api网址
http://docs.cksource.com/ckeditor_api/index.html

获取元素

以保存按钮为例

/**
* index.jsp的js
*/ // When the CKEDITOR instance is created, fully initialized and ready for interaction.
// 当id为content的那个ckeditor被创建,并初始化完成之后
CKEDITOR.instances["content"].on("instanceReady", function() {
// 保存按钮
this.addCommand("save", {
modes : {
wysiwyg : 1,
source : 1
},
exec : function(editor) {
save();
}
});
});
}); // 保存方法
function save() {
// 获取到editor中的内容
var content = editor.document.getBody().getHtml();
alert(content);
}

打印按钮的事件

    this.addCommand("print", {
modes : {
wysiwyg : 1,
source : 1
},
exec : function(editor) {
alert("print button");
}
});

操作事件

除了可以获取按钮的事件外,还能获取整个editor的点击,失去焦点等事件。

案例

用户进入编辑页面,ckeditor显示提示信息,当用户点击进行输入的时候提示信息消失,如果用户什么也没有输入,失去焦点时提示信息重新出现,如果用户输入了,不出现提示信息。

效果

代码

// 失去焦点
this.on('blur', addTips);
// 获得焦点
this.on('focus', deleteTips);
/*
* 点击时清除提示信息
*/
function deleteTips() {
console.log("focus");
var tips = editor.document.getBody().getText().trim();
//console.log("tips: " + tips);
var mytip = "如果想让图片居中,请先选择居中,然后再插入图片!".trim();
//console.log("mytip: " + mytip);
//console.log(tips == mytip);
if (tips == mytip) {
CKEDITOR.instances['content'].setData('');
}
} /*
* 如果没有输入,失去焦点时给出提示信息
*/
function addTips() {
console.log("blur");
var tips = editor.document.getBody().getText().trim();
//console.log("tips: " + tips);
var mytip = "如果想让图片居中,请先选择居中,然后再插入图片!".trim();
//console.log("mytip: " + mytip);
//console.log(tips == mytip);
if (tips.length==0) {
CKEDITOR.instances['content'].setData(mytip);
}
}

参考文献

http://blog.csdn.net/woshirongshaolin/article/details/8240542

CKEditor与CKFinder学习--自定义界面及按钮事件捕获的更多相关文章

  1. CKEditor与CKFinder学习--CKFinder源代码改动自己定义上传文件名称

    CKFinder的系列文章到眼下应该说基本能够满足开发需求了,只是另一个小细节,CKFinder默认上传的文件名称和源文件名称一致,假设文件名称反复会自己主动加入编号"(1)"&q ...

  2. 在JSP里使用CKEditor和CKFinder

    在JSP里使用CKEditor和CKFinder 最 近在做一个新闻发布平台,放弃了很早的FCKEditor,使用CKEditor和CKFinder,尽管免费的CKFinder是Demo版本,但是功 ...

  3. 基于MVC4+EasyUI的Web开发框架经验总结(5)--使用HTML编辑控件CKEditor和CKFinder

    Web开发上有很多HTML的编辑控件,如CKEditor.kindeditor等等,很多都做的很好,本文主要介绍在MVC界面里面,CKEditor的配置和使用.CKEditor的前身是FCKEdito ...

  4. CKEditor与CKFinder的配置(ASP.NET环境)

    CKEditor是一个专门使用在网页上的所得文字编辑器,适用于PHP.ASP.NET.Java等后端开发语言.CKEditor原名为FCKeditor,“FCK” 是这个编辑器的作者的名字Freder ...

  5. 12.HTML编辑器(CKEditor、CKFinder集成)

    CKEditor原名为FckEditor,是著名的HTML编辑器,可以在线编辑HTML内容. 配置参考文档:主要将ckeditor中的lang.plugins.skins.ckeditor.js.co ...

  6. 编辑控件CKEditor和CKFinder

    -使用HTML编辑控件CKEditor和CKFinder Web开发上有很多HTML的编辑控件,如CKEditor.kindeditor等等,很多都做的很好,本文主要介绍在MVC界面里面,CKEdit ...

  7. CKeditor 集成 CKFinder

    之前照着网上的做,遇到了一些问题,经过多次实验修改最后算是成功了,下面进行详细讲解. 一.CKeditor的配置(附件中已有最新版CKeditor和CKFinder) 1.需要下载ckeditor, ...

  8. Ckeditor与Ckfinder的配合使用,上传图片、水印、修改图片名字为当前日期 asp.net

    为了配置出来上传功能,并且还添加水印,修改图片的名字为日期,真的头疼了很久,现在来分享一下自己所做的,也算一点小小的成就吧,顺带帮帮很多还在弄这个的猿们.我是分别用了两种方法.先说低版本的Versio ...

  9. javaScript事件机制深入学习(事件冒泡,事件捕获,事件绑定方式,移除事件方式,阻止浏览器默认行为,事件委托,模拟浏览器事件,自定义事件)

    前言 JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间.可以使用侦听器(或处理程序)来预订事件,以便事件发生时执行相应的代码.这种在传统软 ...

随机推荐

  1. Vertical-Align,你应该知道的一切

    我们聊聊vertical-align.这个属性主要目的用于将相邻的文本与元素对齐.而实际上,verticle-algin可以在不同上下文中灵活地对齐元素,以及进行细粒度的控制,不必知道元素的大小.元素 ...

  2. FrameWork内核解析之WindowManagerService(一)中篇

    阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680 1.WMS概述 WMS是系统的其他服务,无论对于应用开发还是Framew ...

  3. python+tushare获取股票和基金每日涨跌停价格

    接口:stk_limit 描述:获取全市场(包含A/B股和基金)每日涨跌停价格,包括涨停价格,跌停价格等,每个交易日8点40左右更新当日股票涨跌停价格. 限量:单次最多提取4800条记录,可循环调取, ...

  4. 微服务-技术专区-链路追踪(pinpoint)-部署使用

    https://naver.github.io/pinpoint/ https://github.com/naver/pinpoint 背景 随着项目微服务的进行,微服务数量逐渐增加,服务间的调用也越 ...

  5. batch normlization (BN)的讲解

    1. https://zhuanlan.zhihu.com/p/54073204(简单理解) 2. https://zhuanlan.zhihu.com/p/34879333 (有举例说明,但是不太理 ...

  6. idea 右键没有class文件的问题,,

    修改文件夹的  属性  蓝色即为java代码,,绿色为test,,等等

  7. vuex之module的使用

    一.module的作用 由于使用单一状态树,应用的所有状态会集中到一个比较大的对象.当应用变得非常复杂时,store 对象就有可能变得相当臃肿. 为了解决以上问题,Vuex 允许我们将 store 分 ...

  8. es5-class

    1. 通过class定义类/实现类的继承2. 在类中通过constructor定义构造方法3. 通过new来创建类的实例4. 通过extends来实现类的继承5. 通过super调用父类的构造方法6. ...

  9. git——修改已经提交并push后的commit注释

    把代码push到远程后,发现commit的注释居然多了几个错别字,不行,必须改了! 搜索了一些答案之后自己做了一个总结如下: ①修改倒数第次的commit 指令:$ git rebase -i HEA ...

  10. 浅析阿里云API网关的产品架构和常见应用场景

    自上世纪60年代计算机网络发展开始,API(Application Programming Interface )随之诞生,API即应用程序接口,是实现系统间衔接的桥梁.时至今日,API市场已经形成了 ...