需求:

在富文本编辑器中插入图片,图片来自用户可以自己上传的图片库。

本来可以用比较恶心的方式,也就是直接用tinyMCE自带的插入图片插件来实现。恶心是因为这个图片插件需要用户填入图片的url。

想来想去,虽然是内部管理平台产品1期,但作为一个21世纪的程序猿做这样的事儿太low了,而且也怕被同事围殴,还是看了看tinyMCE的插件文档以及官方的image插件。

plugin.js

tinymce.PluginManager.add('imageSelector', function(editor, url) {
// Add a button that opens a window
editor.addButton('imageSelector', {
icon: 'image',
tooltip:"select image from image lib",
onclick: function() {
editor.settings.imageSelectorCallback(function(r){
console.log('inserting image to editor: '+ r);
editor.execCommand('mceInsertContent', false, '<img alt="Smiley face" height="42" width="42" src="' + r + '"/>');
});
}
}); });

写完并测试后觉得挺简单的,基本只要execCommand就搞定图片插入了。

本来还担心图片的缩放功能是image自己实现的,测试后发现完全不用担心了:插入进去的图片已经可以缩放调整大小了,赞!

调用页面的js


    var imageSelector;
var imageSelectedCallback = null;
function showImageSelector(cb){
imageSelectedCallback = cb;
imageSelector = new ImageSelector('#imageSelectorDiv', {}, function(type, data){ // 初始化图片选择弹窗
});
$('#imageSelectorPop').modal({keyboard: true, backdrop: 'static'});
} function insertImage(){
if(imageSelector.selectedItems.length == 0)
return ; imageSelectedCallback(imageSelector.selectedItems[0].url); // 调用插件内部回调把图片插入到编辑器中
$('#imageSelectorPop').modal('hide');
}
tinymce.init({
selector: '.richEditor',
width: 820,
height: 200,
plugins: [
'advlist autolink lists link imageSelector hr',
'visualblocks visualchars code',
'textcolor colorpicker textpattern'
],
toolbar: 'styleselect | forecolor backcolor | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link imageSelector',
imageSelectorCallback: showImageSelector, // 点击编辑器上的图片按钮后的回调方法
setup: function(editor) {
editor.on('init', function(e) { // tinyMCE初始化完成事件
tinyMCE.editors[0].setContent('<%-topic.content%>'); // 设置之前编辑的内容
});
}
});

基本上是插件外部和内部都保留对方的一个callback,双方在事件发生时互相调用。

tinyMCE自定义添加图片插件的更多相关文章

  1. easyui+webuploader+ckeditor实现插件式多图片上传-添加图片权限(图片上传人是谁,只能看到自己的图片)

    需求: 实现过程及思路 1.先页面布局 <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=" ...

  2. Tinymce 编辑器添加自定义图片管理插件

    在使用Tinymce的过程中需要用到图片上传功能,而提供的上传插件在上传文件后是给了一个连接地址,就想用户需要什么图片,不能用最直观的方式表现出来么! 虽然官网上也有一个文件管理的插件moxieman ...

  3. 改善用户体验之wordpress添加图片弹出层效果 (插件 FancyBox)

    下面说说在改善用户体验之wordpress添加图片弹出层效果.效果图如下:   像这篇文章如何在百度搜索结果中显示网站站点logo? 文章内有添加图片,没加插件之前用户点击图片时,是直接_black打 ...

  4. jQuery自定义滚动条样式插件mCustomScrollbar

    如果你构建一个很有特色和创意的网页,那么肯定希望定义网页中的滚动条样式,这方面的 jQuery 插件比较不错的,有两个:jScrollPane 和 mCustomScrollbar. 关于 jScro ...

  5. 我利用网上代码开发的JQuery图片插件

    我利用网上代码开发的JQuery图片插件 代码如下 (function($){ $.fn.FocusPic = function(options){ var defaults = { interval ...

  6. #添加图片,最多只能上传9张.md

    #添加图片,最多只能上传9张.md 前端页面: ```javascript <form id="imgForm" enctype="multipart/form-d ...

  7. jQuery.hhNewSilder 滚动图片插件

    /**  * jQuery.hhNewSilder 滚动图片插件  * User: huanhuan  * QQ: 651471385  * Email: th.wanghuan@gmail.com ...

  8. C#word(2007)操作类--新建文档、添加页眉页脚、设置格式、添加文本和超链接、添加图片、表格处理、文档格式转化

    转:http://www.cnblogs.com/lantionzy/archive/2009/10/23/1588511.html 1.新建Word文档 #region 新建Word文档/// &l ...

  9. phpCMS V9 自定义添加 全局变量{SKIN_PATH}方法

    前言:目前v9版本新增{js_path},{css_path},{img_path}三个全局变量,代替2008版本中{skin_path},样式图片脚本分开路径,确实达到了一定在后台管理方便的目的,但 ...

随机推荐

  1. DuiLib(二)——控件创建

    上一篇讲了窗口及消息,了解了大体的程序框架.这一篇说的是控件的创建. duilib支持XML配置文件,即根据XML创建窗口及控件,将界面与逻辑分开,便于修改及维护.上一篇的示例中可以看到在消息WM_C ...

  2. Python 删除目录中特定文件

    代码如下,使用了递归: import sys currDir = sys.path[] import os def removeFile(dir,postfix): if os.path.isdir( ...

  3. Codeforces Round #315 (Div. 1) A. Primes or Palindromes? 暴力

    A. Primes or Palindromes?Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=3261 ...

  4. SuperToolTips

    https://github.com/nhaarman/supertooltips supertooltips-master.zip

  5. 和Timesten有个约会--Timesten技术专栏系列(一)

    作者: 三十而立 时间:2009年10月03日 12:08:42 本文出自 “inthirties(三十而立)”博客,转载请务必注明作者和保留出处http://blog.csdn.net/inthir ...

  6. 【Github教程】史上最全github用法:github入门到精通

    原文 http://www.eoeandroid.com/thread-274556-1-1.html [初识Github] 首先让我们大家一起喊一句"Hello Github". ...

  7. gdb在运行maintenance info program-spaces命令时coredump

    coredump时的信息: (gdb) maintenance info program-spaces *** Error in `gdb': free(): invalid pointer: 0x0 ...

  8. 【不怕坑】之 Node.js加密 C#解密

    本人也不太了解AES加密解密,为了解决Node.js加密,但是无法C#解密的问题,在网上搜了大量的相关文章. 但是多数是Node.js vs Java 或 Java vs C#的双向加密解密代码,但是 ...

  9. IIS 允许无后缀文件访问的配置

    最近一个项目 前端开发用了一大堆无后缀的html模板,问题就是发布到IIS以后访问 模板文件报404错误.无法下载. 百度 谷歌 搜一堆 都是MIME里添加 '.*' 实际上无效 正解是: MIME里 ...

  10. BootStrap2学习日记3--响应式布局实用类

    BootStrap2中常用的响应式布局类如: visible-phone     仅在 手机平台显示 visible-tablet      仅在 平板电脑显示 visible-desktop   仅 ...