客户指明道姓需要使用百度编辑器,好吧,虽然自从李彦宏把一个好好的千千静听搞得节操尽碎之后,我就对百度的东西毫无好感,但是客户是上帝嘛,不就一个文本编辑器嘛,弄之,始料未及的是,就是这样一个简单的文本编辑器,差点搞了我一天(中间有做其它事儿).

百度编辑器,你这样坑,李彦宏造吗?感觉说多了都是泪啊!

----------------------------------吐槽分割线--------------------------------

具体编辑器的部署和实例就不说了.网上资料太多.说一说坑坑.

1。从官网上下载的东西居然有错。

如图:

包括ueditor.all.js,ueditor.all.min.都报这样的错,请注意,是差了东西,语法错误,我开始还以为是其它人为或是eclipse或是项目的问题,我断断续续从官网上下了五次,包括两种版本,aspjspphp各处语言,结果都报错。各种clean,甚至重启eclipse和电脑。如果是ueditor.all.js还可以自己去修正,这样的压缩的JS叫我从何下手啊?虽然说这样的错不影响使用效果,我也不是有代码洁癖,但这确实影响心情。

2。在页面引入时,ueditor.config.js一定要放在ueditor.all.min.js之前,不然编辑器根本无法显示出来.然后报此错:

搜了一下,在ueditor.config.js的最底部发现了这段代码:

  window.UE = {
getUEBasePath: getUEBasePath
};

好吧,我可以理解成为是对UE的初始化,以便在页面中使用UE创建编辑器的实例.但是我试着把这段代码注释掉,没有报错了,编辑器的实例同样创建了,且不影响正常编辑使用.这证明了,其实UE的初始化是在另一个地方完成的(我没找到不晓得在哪里),我不晓得这段代码用意为何,除了会引起报错以外.

3.神一样的文档和API

官网部署说明,如图:

是的,如果你按照官网的介绍,这样部署,恭喜你,你将永远无法成功!(除非是一个小东西,没有二层以上的目录结构)

你还得去在ueditor.config.js或者页面中对window.UEDITOR_HOME_URL 设置为新的路径。比较麻烦的一点是上传图片,在imageUp.jsp中需要进行修改

 //加载配置文件
Properties pro = new Properties();
String propertiesPath = request.getRealPath("/jsp/config.properties");//报错
request.getRealPath("editor/jsp/config.properties");
Properties properties = new Properties();

在ueditor.config.js中对路径进行具体的设置和各种属性的设置,我能理解,但是居然需要对自带的页面进修改,着实无法理解!

API要稍微靠谱一点,但也容易让人产生误解.对于getAllHtml()方法,文档给出的解释是"取得完整的html代码,可以直接显示成完整的html文档",用之,编辑了大概千字不到的文本还不包括其它大文件,插入数据库就报长度错误了.然后就跟这方法各种死磕啊…………

我的理解是getAllHtml()这个方法能够取得包括整个编辑器和实际编辑内容的HTML格式内容,实际上,哪怕编辑器内没有任何东西,提交到后台的内容长度大概也在五万左右。然后想各种方法去过滤掉这部分,甚至想过用字符串截取…………那阵子脑袋已经乱了,后来出去抽了支烟,透了透气,一想,不对啊,肯定有别的方法。这当然是我的错了,但是,我觉得API文档也有不尽人意之处.

对于百度编辑器获取编辑内容,如果是在后台获取,只需使用request和name属性即可;如果是在前端,则需使用UE的getContent().对于后一点,我有用baidu和google在网上搜了巨多的资料和博文,我发现其中都没有明确讲到这一点,文档倒是讲了,可是不清不楚有岐义,所以这也不能全怪我吧?

PS:

在使用UEditor的时候由于各种原因吧,出现了许多问题,我坚持认为编辑器本身是有些值得商榷的地方,当然我个人也有问题!我没想到引来许多园友的评论,甚至引来UEditor的作者。甚至上了首页24小时评论和阅读排行榜,我感到惶恐,这只是一个吐槽贴,并没有提出建设性的意见和建议,也不是严格意义上的技术讨论。我做检讨,也请大家适可而止。

我不是专业搞前端的,这也毕竟只是我一家之言,平心而论,确实,作为一个开源项目也不可能照顾到每一个人。如果有对UEditor的作者,UEditor爱好者及拥趸造成困扰,我表示非常抱歉!

  

ueditor:原谅我这一生不羁放纵爱独特的更多相关文章

  1. 【C++对象模型】构造函数语意学之二 拷贝构造函数

    关于默认拷贝构造函数,有一点和默认构造函数类似,就是编译器只有在[需要的时候]才去合成默认的拷贝构造函数. 在什么时候才是[需要的时候]呢? 也就是类不展现[bitwise copy semantic ...

  2. 虎说:bootstrap源码解读(重置模块)

    ------<!--action-->------ 开场show:前不生“不犹豫”,后半生“不后悔”.今天又逃课,我不后悔 素材:推特公司的前端框架bootstrap(下称bt),解读源码 ...

  3. 用javascript和html5做一个音乐播放器,附带源码

    效果图: 实现的功能 1.首页 2.底部播放控件 3.播放页面 4.播放列表 5.排行榜 6.音乐搜索 输入搜索关键词,点击放大镜图标 7.侧边栏 目录结构 开发心得与总结 1.轮播图 首先感谢作者S ...

  4. JS和H5做一个音乐播放器,附带源码

    http://mp.weixin.qq.com/s/KpXT9X46AMlUVXQvpHuXGQ 效果图: 实现的功能 1.首页 2.底部播放控件 3.播放页面 4.播放列表 5.排行榜 6.音乐搜索 ...

  5. it喜爱的歌词

    1.曼丽 我们的过去我们的情义怎么能忘记  #曼丽你怎么这样忍心静静的就离去 #我很伤心从今以后不能够见到你 #只有留下你往日的情景使我常回忆 #一样的青山一样的绿水只有我和你 #曼丽可记得我们时常快 ...

  6. Eclipse 变量点击高亮显示以及自己定义高亮显示颜色

    1.方法一:alt+shift+o 打开/关闭,该功能 2.方法二:windows-> preferences->java->Editor->Mark Occurences ( ...

  7. python_0基础开始_day03

    第三节 一.整形和布尔值的转换 int整型 python3: 全部都是整型 python2: 整型,长整型long 十进制转换二进制 # 将十进制的168转换为二进制 ​#得出结果 将十进制的168转 ...

  8. Python_基础数据类型

    一,首先介绍一下变量 1. 变量是什么 在Python中,变量的概念基本上和初中代数的方程变量是一致的. 2. 变量命名规则 由数字.字母.下划线组成 不能以数字开头 要具有描述性 要区分大小写 禁止 ...

  9. 我的2013 Q.E.D

    "旧历的年底毕竟最像年底,村镇上不必说,就在天空中也显出将到新年的气象来.灰白色的沉重的晚云中间时时发出闪光,接着一声钝响,是送灶的爆竹:近处燃放的可就更强烈了,震耳的大音还没有息,空气里已 ...

随机推荐

  1. C# 判断一字符串是否为合法数字(正则表达式)

    判断一个字符串是否为合法整数(不限制长度) public static bool IsInteger(string s) { string pattern = @"^\d*$"; ...

  2. 使用nodejs引用socket.io做聊天室

    Server: var app = require('http').createServer(handler) , io = require('socket.io').listen(app) , fs ...

  3. Silverlight中DataPager控件扩展

    大家一定遇到这样的情况,想改变一下SL的DataPager的显示信息,比如希望分页控件上显示数据的总数.那么就需要扩展一下DataPager控件即可. 其实扩展DataPager很简单,只要获取到Da ...

  4. 理解 JavaScript Scoping & Hoisting(二)

    理解 JavaScript Scoping & Hoisting(二) 转自:http://www.jb51.net/article/75090.htm 这篇文章主要介绍了理解 JavaScr ...

  5. python 解析XML python模块xml.dom解析xml实例代码

    分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...

  6. Sublime Text生成html标签快捷键

    Emmet Documentation Syntax   Child: > nav>ul>li <nav> <ul> <li></li> ...

  7. Fragment的创建以及与activity的参数传递

    点击下面不同的TextView变化不同的Fragment avtivity与Fragment之间传递消息不能使用构造器传递,用bunder传递 首先写一个含有FrameLayout(这个布局最佳),里 ...

  8. 关于Raw,Assets的使用

    Raw,Assets下文件区别: 相同点:两个目录下的文件在打包后都会原封不动的保存到apk中,不会被编译成二进制. 不同点:Raw下文件不能使用目录结构, 有些格式的会被压缩,能够通过R.raw方便 ...

  9. 第七章 管理类型(In .net4.5) 之 使用类型

    1. 概述 本章介绍 值类型的装箱拆箱.类型转换 以及 C#4.0新推出的 dynamic 关键字. 2. 主要内容 2.1 装箱和拆箱 2.2 类型转换 有四种方式可以实现类型转换: ① 隐式转换: ...

  10. Linq的一些记录

    1. IQueryable接口与IEnumberable接口的区别:  IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了, ...