tinyMCE自定义添加图片插件

需求:

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

 

本来可以用比较恶心的方式,也就是直接用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,双方在事件发生时互相调用。

 

转载于:https://www.cnblogs.com/jasonxuli/p/5127826.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系进行推荐。 协同过滤算法主要分为两类: 基于物品的协同过滤算法:给用户推荐与他之前喜欢的物品相似的物品。 基于用户的协同过滤算法:给用户推荐与他兴趣相似的用户喜欢的物品。 协同过滤算法的优点包括: 无需事先对商品或用户进行分类或标注,适用于各种类型的数据。 算法简单易懂,容易实现和部署。 推荐结果准确性较高,能够为用户提供个性化的推荐服务。 然而,协同过滤算法也存在一些缺点: 对数据量和数据质量要求较高,需要大量的历史数据和较高的数据质量。 容易受到“冷启动”问题的影响,即对新用户或新商品的推荐效果较差。 存在“同质化”问题,即推荐结果容易出现重复或相似的情况。 协同过滤算法在多个场景中有广泛的应用,如电商推荐系统、社交网络推荐和视频推荐系统等。在这些场景中,协同过滤算法可以根据用户的历史行为数据,推荐与用户兴趣相似的商品、用户或内容,从而提高用户的购买转化率、活跃度和社交体验。 未来,协同过滤算法的发展方向可能是结合其他推荐算法形成混合推荐系统,以充分发挥各算法的优势。
tinymce自定义插件可以通过以下步骤来实现: 1. 首先,你需要将插件的代码添加tinymce的配置选项中。你可以使用`global.add()`方法将插件注册到tinymce.PluginManager对象中。例如,你可以在配置选项中添加以下代码: ``` tinymce.init({ plugins: 'yourCustomPlugin', toolbar: 'yourCustomPlugin' }); ``` 2. 接下来,你需要创建插件的代码。你可以使用`editor.addCommand()`方法注册命令,使用`editor.addButton()`方法注册按钮,使用`editor.addMenuItem()`方法注册菜单栏。你可以在插件的代码中使用这些方法来定义插件的功能和行为。 3. 最后,你需要将插件的代码添加tinymce.PluginManager对象中。你可以使用`global.add()`方法将插件注册到PluginManager对象中。例如,你可以在全局作用域中添加以下代码: ``` global.add('yourCustomPlugin', function (editor) { // 在这里定义插件的功能和行为 }); ``` 通过以上步骤,你就可以自定义插件并将其添加tinymce中了。记得在配置选项中指定插件的名称,并在插件的代码中定义插件的功能和行为。 #### 引用[.reference_title] - *1* *2* [TinyMCE 富文本编辑器 ━━ 自定义插件 [转载]](https://blog.csdn.net/snans/article/details/100862639)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [tinymce自定义插件开发](https://blog.csdn.net/weixin_46613448/article/details/131200664)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值