主题: 试用一天后的一些建议,改动,和疑似Bug |
作者: 真红, 发布日期: 2009-09-15 22:57:53, 浏览数: 5924 |
本人今天刚接触KE,觉得架构的非常好,有一个清晰健壮且易扩展的底层支持,相信KE以后一定会有大作为。 以下是今天试用一天下来的一些想法,个人雏议,说错请不必在意。 另外,似乎没有上传附件功能哦, 本来还想把今天改动这些代码都打包发上来的。 建议 1: 增加dialog的init事件 插件窗口在载入的时候做一些事情,但是并没有接口。click事件里处理,不太对吧? 简单说,比如about插件,想要在dialog载入的时候,读取KE.version写入,目前好像没有好的实现方案。 建议 2: 建议作者在代码缩入的时候,试用tab ^_^ 今天我只是把所有的缩入替换成tab,发现竟然可以节省10多kb - -! 修改 1: 很多编辑器,都把flash,音频等分开处理,个人总觉得有点多余 (^_^@) 今天尝试了一下KE的插件机制,做了点小改动。 删除flash插件, 将flash,mp3,flv,其它音频视频合并起来,集中到多媒体中。增加了一个flv播放器(vcastr的)用于播放flv,一个flash的mp3播放器(google的,因为个人不喜欢M$的MP,老实打不开,而且不同系统下界面不一样,ff支持又不是很好)用于播放mp3。 这个改动修改了plugin/media.html, 和 kindeditor.js - KE.plugin['media'] - privew, exec 扩展 1: 为image插件增加了一个referMethod属性,并可以通过KE.config配置。增加的目的是这样。 项目中可能有多个功能使用KE, 如果都需要上传图片, 每个功能上传的图片我是要做不同处理的,比如缩略图,比如存放位置和文件命名规则各自不同。 referMethod在KE的引用页面指定,用于指定当前功能标示,上传图片时此会传递给后台图片上传程序(通过Request.Form["referMethod"]获取),然后根据各自的规则处理。 这个改动修改了plugin/image.html, 和 kindeditor.js - KE.plugin['image'] - exec。 疑似Bug 1: 在火狐下,加入flash后,编辑界面似乎不会显示flash? 连占位符都没有 在IE下正常,不知道是否我浏览器问题。 疑似Bug 2: 相对路径的转换,可能有点小问题。 添加图片, 选择远程, 输入一个本域的图片。 比如我的域名是 www.a.com, 添加图片功能中选择远程,输入 http://www.a.com/images/1.jpg, 插入后,浏览器会自动将我的src属性转换成相对路径 "images/1.jpg",可以确认这是浏览器做的,不是KE做的。这个转换后的路径,不是以 "/" 开头的,这个就太相对了。 假如我把这些数据存储起来,而我的文章显示页面是位于 http://www.a.com/module/article.aspx,那么很显然图片会无法显示。 同理,flash也会遇到这样的问题。 疑似Bug3: js文件872行-874行对相对路径做了处理。 但是似乎没有考虑到自定义属性? 如果我的自定义属性确实需要有定义一个绝对路径的值呢? 个人以为,相对路径处理可能只需要针对src属性即可,并且只处理头部为 "http://" 的,并不需要对 val 进行全局判断, 不知是否有疏漏之处。 疑似Bug 4: js文件878行,判断val如果没有被引号括起来,则修正。 但是在858行,val = val.substr(1, val.length - 2); 这里显然是想当然的认为val已经被引号括起来了? 这个处理顺序是否倒了呢? 综合以上问题,我自己做了些处理,如下: // javascript code // 以下代码替换854 - 878 行 // 刚发现一个会导致引用外部绝对地址,前面多一个 '/' 的问题,已修正。 // if the val has '"', remove it temporarily // to get the true-value if (val.charAt(0) === '"') val = val.substr(1, val.length - 2); // if the true-value is not empty if (val !== '') { if (key === "style") { val = val.replace(/\s*([^\s]+?)\s*:(.*?)(;|$)/g, function($0, $1, $2) { var k = $1.toLowerCase(); if (isFilter) { if (typeof htmlTagHash[tagName]['.' + k] == "undefined") return ''; } var v = KE.util.trim($2.toLowerCase()); v = KE.util.rgbToHex(v); return k + ':' + v + ';'; }); val = KE.util.trim(val); if (val === '') return ''; val = '"' + val + '"'; } if (key === "src" || key === "href") { // just for the values with 'http://' at beginning ? if(val.substr(0, 7) === 'http://') { // at the same domain, set to relative path if(val.substr(7, domain.length) === domain) val = val.substr(domain.length + 7); } else { // for relative path, confirm with a '/' lead if (val.charAt(0) !== '/') val = '/' + val; } } } // add a '"' with the val return ' ' + key + '="' + val + '" '; // javascript code end |
作者: Roddy, 发布日期: 2009-09-16 12:49:50 |
建议 1:
增加dialog的init事件 插件窗口在载入的时候做一些事情,但是并没有接口。click事件里处理,不太对吧? 简单说,比如about插件,想要在dialog载入的时候,读取KE.version写入,目前好像没有好的实现方案。 > 不错的建议,dialog确实需要加强了。 建议 2: 建议作者在代码缩入的时候,试用tab ^_^ 今天我只是把所有的缩入替换成tab,发现竟然可以节省10多kb - -! > 用空格可以在各种开发工具上保持一致的缩进,下载js时一般有gzip压缩,性能不是问题。 修改 1: 很多编辑器,都把flash,音频等分开处理,个人总觉得有点多余 (^_^@) > 程序上逻辑相同,但一般用户可能以为没有插入Flash的功能,这是用户体验的问题,有待于观察。 扩展 1: 为image插件增加了一个referMethod属性,并可以通过KE.config配置。增加的目的是这样。 项目中可能有多个功能使用KE, 如果都需要上传图片, 每个功能上传的图片我是要做不同处理的,比如缩略图,比如存放位置和文件命名规则各自不同。 referMethod在KE的引用页面指定,用于指定当前功能标示,上传图片时此会传递给后台图片上传程序(通过Request.Form["referMethod"]获取),然后根据各自的规则处理。 这个改动修改了plugin/image.html, 和 kindeditor.js - KE.plugin['image'] - exec。 > 目前插件机制没有配置功能,比如碰到你说的情况只能改程序,写插件时动态添加配置属性可能是比较好的解决方法。比如你的程序包含aaa插件,那你执行KE.show时可以用参数配置aaa插件。 疑似Bug 1: 在火狐下,加入flash后,编辑界面似乎不会显示flash? 连占位符都没有 在IE下正常,不知道是否我浏览器问题。 > 这应该算是Firefox的问题,要解决的话只能用图片替换Flash,最后输出时再转换。 疑似Bug 2: 相对路径的转换,可能有点小问题。 添加图片, 选择远程, 输入一个本域的图片。 比如我的域名是 www.a.com, 添加图片功能中选择远程,输入 http://www.a.com/images/1.jpg, 插入后,浏览器会自动将我的src属性转换成相对路径 "images/1.jpg",可以确认这是浏览器做的,不是KE做的。这个转换后的路径,不是以 "/" 开头的,这个就太相对了。 假如我把这些数据存储起来,而我的文章显示页面是位于 http://www.a.com/module/article.aspx,那么很显然图片会无法显示。 同理,flash也会遇到这样的问题。 > 路径处理每个浏览器都不一致,你说的情况应该在Firefox出现。 疑似Bug3: js文件872行-874行对相对路径做了处理。 但是似乎没有考虑到自定义属性? 如果我的自定义属性确实需要有定义一个绝对路径的值呢? 个人以为,相对路径处理可能只需要针对src属性即可,并且只处理头部为 "http://" 的,并不需要对 val 进行全局判断, 不知是否有疏漏之处。 > 目前路径处理确实不太好,但只针对src也不行,还有href。 疑似Bug 4: js文件878行,判断val如果没有被引号括起来,则修正。 但是在858行,val = val.substr(1, val.length - 2); 这里显然是想当然的认为val已经被引号括起来了? 这个处理顺序是否倒了呢? > 这部分处理的HTML是innerHTML返回的HTML,所以key === "style" 时肯定有双引号,如果没有双引号的情况请指出。 |
回复 |
作者: 阿辛, 发布日期: 2009-09-23 15:06:02 |
强啊,牛人层出不穷啊 |
回复 |