Hallo.js基于jQuery UI所见即所得的Web编辑器


Posted in Javascript onJanuary 26, 2016

先看看效果:

Hallo.js基于jQuery UI所见即所得的Web编辑器

Hallo.js是一个简单的富文本Web编辑器,基于jQuery UI并且利用HTML5的contentEditable实现所见即所得。其目标并不是取代当今非常流行的编辑器,如 TinyMCE 或 Aloha Editor,而是给开发者提供一种更简单、更愉快的用户编辑体验。

Hallo.js是由Henri Bergius为IKS项目开发的一款免费软件,使用CoffeeScript开发,遵循MIT许可协议,托管在GitHub上。

使用方法

1、你需要将jQuery、jQuery UI和Rangy库引入到你的项目中:

<script src="js/jquery.min.js"></script>
<script src="js/jquery-ui.min.js"></script>
<script src="js/rangy-core.js"></script>

编辑器工具栏使用jQuery UI的主题,因此你可能还想自定义一个主题,适合你的需要。工具栏图标字体基于Font Awesome。风格的工具栏出现在演示中,你也会想添加一些CSS(如背景和边框)的类hallotoolbar。

<link rel="stylesheet" href="/path/to/your/jquery-ui.css">
<link rel="stylesheet" href="/path/to/your/font-awesome.css">

引入Hallo.js

<script src="hallo.js"></script>

调用插件是非常简单的

jQuery('p').hallo();

你也可以关闭标签的编辑功能

jQuery('p').hallo({editable: false});

Hallo自己只能使选择的DOM元素可编辑和不提供任何格式的工具。格式是通过加载插件初始化Hallo。即使简单的事情,如粗体和斜体的插件:

jQuery('.editable').hallo({
 plugins: {
  'halloformat': {}
 }
});

这个例子可以使简单的格式的插件,提供如粗体和斜体的功能。你可以有很多好的插件为你想,如果有必要通过他们的选择。

Hallo有更多的选项设置当实例化。请参阅文档hallo.coffee文件。

事件方法

Hallo有一些事件,有助于整合和调用。你可以使用jQuery bind订阅它们:

  • halloenabled: Triggered when an editable is enabled (editable set to true)
  • hallodisabled: Triggered when an editable is disabled (editable set to false)
  • hallomodified: Triggered whenever user has changed the contents being edited. Event data key content contains the HTML
  • halloactivated: Triggered when user activates an editable area (usually by clicking it)
  • hallodeactivated: Triggered when user deactivates an editable area

插件

  • halloformat ? Adds Bold, Italic, StrikeThrough and Underline support to the toolbar. (Enable/Disable with options: “formattings”: {“bold”: true, “italic”: true, “strikethrough”: true, “underline”: false})
  • halloheadings ? Adds support for H1, H2, H3. You can pass a headings option key to specify what is going to be displayed (e.g. “formatBlocks”:[“p”, “h2″,”h3”])
  • hallojustify ? Adds align left, center, right support
  • hallolists ? Adds support for ordered and unordered lists (Pick with options: “lists”: {“ordered”: false, “unordered”: true})
  • halloreundo ? Adds support for undo and redo
  • hallolink ? Adds support to add links to a selection (currently not working)
  • halloimage ? Image uploading, searching, suggestions
  • halloblacklist ? Filtering unwanted tags from the content

编写一个插件

Hallo插件编写正则jQuery UI插件。

当Hallo加载也加载单元所有启用的插件,并通过他们一些额外的选项:

  • editable: The main Hallo widget instance
  • uuid: unique identifier of the Hallo instance, can be used for element IDs

一个简单的插件看起来像以下的:

#  Formatting plugin for Hallo
#  (c) 2011 Henri Bergius, IKS Consortium
#  Hallo may be freely distributed under the MIT license
((jQuery) ->
 jQuery.widget "IKS.halloformat",
  boldElement: null

  options:
   uuid: ''
   editable: null

  _create: ->
   # Add any actions you want to run on plugin initialization
   # here

  populateToolbar: (toolbar) ->
   # Create an element for holding the button
   @boldElement = jQuery '<span></span>'

   # Use Hallo Button
   @boldElement.hallobutton
    uuid: @options.uuid
    editable: @options.editable
    label: 'Bold'
    # Icons come from Font Awesome
    icon: 'icon-bold'
    # Commands are used for execCommand and queryCommandState
    command: 'bold'

   # Append the button to toolbar
   toolbar.append @boldElement

  cleanupContentClone: (element) ->
   # Perform content clean-ups before HTML is sent out

)(jQuery)

以上就是关于Hallo.js富文本编辑器的详细介绍,希望对大家的学习有所帮助。

Javascript 相关文章推荐
图片格式的JavaScript和CSS速查手册
Aug 20 Javascript
javascript firefox兼容ie的dom方法脚本
May 18 Javascript
理解Javascript_14_函数形式参数与arguments
Oct 20 Javascript
JavaScript判断变量是对象还是数组的方法
Aug 28 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
May 02 Javascript
详解Vue.use自定义自己的全局组件
Jun 14 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 Javascript
vue结合Echarts实现点击高亮效果的示例
Mar 17 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
May 04 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
Sep 23 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
Apr 07 Javascript
Node在Controller层进行数据校验的过程详解
Aug 28 Javascript
基于JavaScript如何制作遮罩层对话框
Jan 26 #Javascript
基于Node.js实现nodemailer邮件发送
Jan 26 #Javascript
JavaScript小技巧整理篇(非常全)
Jan 26 #Javascript
基于canvas实现的绚丽圆圈效果完整实例
Jan 26 #Javascript
基于canvas实现的钟摆效果完整实例
Jan 26 #Javascript
js实现的页面矩阵图形变换特效
Jan 26 #Javascript
JS实现简单的二维矩阵乘积运算
Jan 26 #Javascript
You might like
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
php解析json数据实例
2014/08/19 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
smarty中post用法实例
2014/11/28 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
微信自定义分享php代码分析
2016/11/24 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
通过实例简单了解Python sys.argv[]使用方法
2020/08/04 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
职业教育毕业生求职信
2013/11/09 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
国庆横幅标语
2014/10/08 职场文书
风之谷观后感
2015/06/11 职场文书