xheditor简介
xheditor是一个基于jquery开发的简单迷你并且高效的可视化html编辑器,基于网络访问并且兼容ie 6.0+, firefox 3.0+, opera 9.6+, chrome 1.0+, safari 3.22+。
xheditor曾经是我比较喜欢的编辑器,也是率先支持拖拽上传的编辑器之一。xheditor在当年是优秀的编辑器,功能足够强大,使用体验也相当好,拖拽上传是我最喜欢的功能,只可惜已经停止开发了。xheditor最后的稳定版本是1.1.14,至今已超过2年未更新(2013年发布了开发版本1.2.1),作者已经停止开发和维护了,社区论坛完全不能打开。
由于xheditor基于jquery开发,而对于新版本的jquery,它并不能很好的支持,只有1.4版本的jquery是支持得最好的。
虽然已经不再更新了,但在一些需要富文本编辑器的场合,她还是可以完全胜任的。
本文以1.1.14版本为例,讲述如何在flask项目中使用xheditor编辑器,并实现图片上传、文件上传的后端功能。
xheditor主要特点:
精简迷你:初始加载4个文件,包括:1个js(50k)+2个css(10k)+1个图片(5k),总共65k。若js和css文件进行gzip压缩传输,可以进一步缩减为24k左右。
使用简单:简单的调用方式,加一个class属性就能将您的textarea立马变成一个功能丰富的可视化编辑器。
无障碍访问:提供wai-aria全面支持,全键盘精细操作,全程语音向导,提供完美无障碍访问体验,让残疾人也能够谱写精彩人生。
内置ajax上传:内置强大的ajax上传,包括html4和html5上传支持(多文件上传、真实上传进度及文件拖放上传),剪切板上传及远程抓取上传,追求完美的用户上传体验。
word自动清理:实现word代码自动检测并清理,提供高效完美的word代码过滤方案,生成代码最优化精简,但是却不丢失任何细节效果。
ubb可视化编辑:提供完美的ubb可视化编辑解决方案,在您获得安全高效代码存储的同时,又能享受可视化编辑的便捷。
在flask项目中使用xheditor首先我们需要到xheditor官网下载1.1.14版本的xheditor编辑器,下载之后解压到flask项目的static/xheditor目录。
xheditor提供2种初始化方式:class初始化和javascript初始化。class初始化只需要给textarea设置值为xheditor的class属性,它就会自动变成xheditor编辑器,一个页面可以同时同在多个编辑器,而且这个类属性可以添加参数。(ps:ckeditor也有这个功能)
对于这两种初始化方式,官网有提供设置很方便的设置向导,使得配置相对比较简单。
示例代码:
《script》
《script》
这里表示抓取除localhost之外其它域名的图片。
远程抓图处理示例代码:
def gen_rnd_filename():
filename_prefix = datetime.datetime.now().strftime(‘%y%m%d%h%m%s’)
return ‘%s%s’ % (filename_prefix, str(random.randrange(1000, 10000)))
@app.route(‘/uploadremote/’, methods=[‘post’])
def uploadremote():
“””
xheditor保存远程图片简单实现
url用”|”分隔,返回的字符串也是用”|”分隔
返回格式是字符串,不是json格式
“””
localdomain_re = re.compile(r’https?:\/\/[^\/]*?(localhost:?\d*)\/’, re.i)
imagetypes = {‘gif’: ‘.gif’, ‘jpeg’: ‘.jpg’, ‘jpg’: ‘.jpg’, ‘png’: ‘.png’}
urlout = []
result = ”
srcurl = request.form.get(‘urls’)
if srcurl:
urls = srcurl.split(‘|’)
for url in urls:
if not localdomain_re.search(url.strip()):
downfile = urllib.urlopen(url)
fext = imagetypes[downfile.headers.getsubtype().lower()]
rnd_name = ‘%s%s’ % (gen_rnd_filename(), fext)
with open(os.path.join(app.static_folder, ‘upload’, rnd_name), ‘wb’) as fp:
fp.write(downfile.read())
urlreturn = url_for(‘static’, filename=’%s/%s’ % (‘upload’, rnd_name))
urlout.append(urlreturn)
else:
urlout.append(url)
result = ‘|’.join(urlout)
return result
更多python的flask站点中集成xheditor文本编辑器相关文章请关注php中文网!