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 相关文章推荐
jQuery EasyUI API 中文文档 - Draggable 可拖拽
Sep 29 Javascript
js Date概念详细介绍
Nov 22 Javascript
js中的json对象详细介绍
Oct 29 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
Sep 26 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
Nov 30 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
May 10 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
Jun 06 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
Jun 25 Javascript
javascript 正则表达式分组、断言详解
Apr 20 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
Nov 10 Javascript
elementUI select组件value值注意事项详解
May 29 Javascript
微信小程序自定义单项选择器样式
Jul 25 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生成zip文件类实例
2015/04/07 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
javascript window.opener的用法分析
2010/04/07 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
javascript 实现字符串反转的三种方法
2013/11/23 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
javascript实现淘宝幻灯片广告展示效果
2015/04/27 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
javascript如何写热点图
2015/12/08 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
Eclipse + Python 的安装与配置流程
2013/03/05 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
Python pymongo模块常用操作分析
2018/09/01 Python
python判断完全平方数的方法
2018/11/13 Python
python适合人工智能的理由和优势
2019/06/28 Python
python循环输出三角形图案的例子
2019/11/22 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
幼儿园六一主持词开场白
2015/05/28 职场文书
灵魂歌王观后感
2015/06/17 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书