一步步教你编写redactor的插件

Redactor是一款JQuery框架下的所见即所得在线HTML编辑器,具有常用的功能如图片/文件上传、表格、格式化等等,不仅轻量级和跨浏览器,还支持各种平台如PC、Mac、iPad, iPhone、Android、Refrigerators,更重要的它能够自动保存、自动调整大小,还有一套API。

准备说明

我们就以表情插件为例,看展示下它的插件编写。首先准备好表情图片,放在目录的img文件夹,请查看示例包

使用redactor只需要引用redactor.js和redactor.css即可,所以我们的示例直接应用谷歌的JQuery库以及redactor官方的redactor.js和redactor.css。如果你不愿意可以直接把js和css另存在本地也行。或许你会问它的背景图片不需要了吗?这就是我认为它有意思的地方,它的背景是:

这张背景图片被base64编码后放在了redactor.js文件中了。如果不喜欢放在脚本,可以把图片另存即可。redactor.js一大段乱码看起来也蛮不爽的。

演示的HTML页面

我们HTML页面命名为index.html,代码如下:

<!DOCTYPE html>
<html>
<head>	
	<title>第一个redactor插件</title>
	<meta charset="utf-8">
	<link rel="stylesheet" href="http://imperavi.com/js/redactor/redactor.css" />	  
</head>
<body>		
</body>
</html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script src="http://imperavi.com/js/redactor/redactor.js"></script> 

制作插件

下面我们来制作插件,其实制作插件的官方文档说的蛮详细的,可以去了解下。我们制作这个插件主要步骤:

  1. 添加表情按钮到toolbar;
  2. 点击表情按钮弹出表情列表窗口;
  3. 选择表情并把表情插入编辑器中;

插件的基本格式

if (typeof RedactorPlugins === 'undefined') var RedactorPlugins = {}; 
RedactorPlugins.plginname = { 
    init: function()
    {
        //....
    }
}
  • init 为redactor初始化回调函数;
  • plginname为插件名称;

插件的脚本文件

在实际使用redactor中可能制作的插件比较多,所以我们把插件都放在一个js文件中,命名为redactor-plugin.js.

我们制作的表情插件名命名为:smile,所以redactor-plugin.js文件内容如下:

if (typeof RedactorPlugins === 'undefined') var RedactorPlugins = {}; 
RedactorPlugins.smile = { 
    init: function()
    {
        //....
    }
}

添加表情按钮到toolbar

添加自定义按钮到toolbar,需要用到redactor的插件API:addBtn,声明如下:

this.addBtn(button_key, button_title, function(redactor_object, event, button_key) { callback; });
  • button_key 是按钮key,不可见;
  • button_title 是按钮名称,鼠标悬停显示;
  • redactor_object是redactor对象,event是事件对象,button_key是按钮key;
  • callback为回调函数;

redactor-plugin.js文件内容如下:

if (typeof RedactorPlugins === 'undefined') var RedactorPlugins = {}; 
RedactorPlugins.smile = { 
    init: function()
    {
         this.addBtn('smile', '表情', function(redactor_object, event, button_key) {
		
	 })
    }
}

加载redactor及其插件

插件制作完成,就应该把插件加载到redactor中了,所以index.html的HTML代码如下:

<!DOCTYPE html>
<html>
<head>	
	<title>第一个redactor插件</title>
	<meta charset="utf-8">
	<link rel="stylesheet" href="http://imperavi.com/js/redactor/redactor.css" />	
</head>
<body>
	
	<textarea id="redactor" name="content">
		<h2>Hello and Welcome</h2>
		<p>我是osEye</p>
		<p>如果12是个循环的话,13就是新的开始....</p>
	</textarea>
</body>
</html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script src="http://imperavi.com/js/redactor/redactor.js"></script>  
<script src="redactor-plugin.js"></script>  
<script type="text/javascript">
$(document).ready(
	function(){
		var buttons = ['formatting', '|', 'bold', 'italic', 'fullscreen'];
		$('#redactor').redactor({ 
			plugins: ['smile']
		});
	}
);
</script>

添加了一个id为redactor的textarea,用于redactor编辑器的归宿,在脚本中加载redactor。脚本放置文档底部是为了满足那啥的性能优化规则,哈哈。

添加CSS显示toolbar按钮

此刻打开index.html应该看到表情按钮啦吧?!

No,你还看不到,因为toolbar的按钮都是背景图展示的,而且CSS有一定的规则:

body .redactor_toolbar li a.redactor_btn_按钮key  {
	background: url(图片地址) no-repeat;
}

背景图是25x25px的图片,我这里就随意用表情图片做背景图了,你在实际应用中肯定用精美的图片。所以在index.html中必须加上样式,实际应用中CSS文件最好也独立成文件,我这里只是示例,所以我直接放在index.html文档中了,现在的index.html的HTML代码如下:

<!DOCTYPE html>
<html>
<head>	
	<title>第一个redactor插件</title>
	<meta charset="utf-8">
	<link rel="stylesheet" href="http://imperavi.com/js/redactor/redactor.css" />	
	<style type="text/css">
	body .redactor_toolbar li a.redactor_btn_smile  {
		background: url(img/tootha.gif) no-repeat;
	}
	</style>
</head>
<body>
	
	<textarea id="redactor" name="content">
		<h2>Hello and Welcome</h2>
		<p>我是osEye</p>
		<p>如果12是个循环的话,13就是新的开始....</p>
	</textarea>
</body>
</html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script src="http://imperavi.com/js/redactor/redactor.js"></script>  
<script src="redactor-plugin.js"></script>  
<script type="text/javascript">
$(document).ready(
	function(){
		var buttons = ['formatting', '|', 'bold', 'italic', 'fullscreen'];
		$('#redactor').redactor({ 
			plugins: ['smile']
		});
	}
);
</script>

现在可以看到表情按钮了吧^_^。

添加点击按钮回调事件,弹出表情列表

redactor中有调用模态窗口的插件API:

this.modalInit(title, elment, width, callback);
  • title 为窗口名称;
  • elment HTML内容或HTML元素Id事件;为HTML元素ID时,窗口自动把ID的HTML填充到窗口中;
  • width 为窗口的宽度;
  • callback 为回调函数;

redactor-plugin.js文件内容如下:

if (typeof RedactorPlugins === 'undefined') var RedactorPlugins = {}; 
RedactorPlugins.smile = { 
    init: function()
    {
        this.addBtn('smile', '表情', function(redactor_object, event, button_key) {
		var callback = $.proxy(function(){
			$('#face').find('img').each(function(){
				$(this).click(function(){
					redactor_object.insertHtml('<img src="'+$(this).attr('src')+'">');	
					redactor_object.modalClose();
				})
			});
		}, redactor_object);
		redactor_object.modalInit('表情', '<div id="face"><img src="img/sada.gif"> <img src="img/smilea.gif"> <img src="img/yalishanda.gif"> <img src="img/yw.gif"> <img src="img/sada.gif"> <img src="img/yx.gif"> <img src="img/tootha.gif"></div>', 500, callback);
	 })
    }
}

效果图

源码下载请点击这里

转载于:https://www.cnblogs.com/zhaiqianfeng/archive/2013/01/09/4618348.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值