WebUpload 插件初始化问题

本文主要针对WebUpload 文件上传插件在初始化多个时,插件自定义按钮显示位置错位导致点击失效的问题提供解决方案。(亦可描述为webupload插件在父容器display属性为none的情况下初始化位置异常)

官网

目录

  • WebUpload 插件初始化问题

    • 目录
    • 实际案例
    • 源码分析
    • 参考
    • 感谢

实际案例

1、基于avalon开发的前端界面

  • ms-if =”布尔表达式” 为true,表示生成下方页面文本;反之,不生成

  • ms-visible=”布尔表达式” 为true,表示显示下方页面文本(display:block);反之,不显示(display:none)

2、解决方法

  • 初始化前先利用ms-if显示webuploader绑定的容器部分,再执行初始化方法
  • 或者利用ms-if每次动态生成页面部分代码,再执行初始化方法
  • 利用ms-visible控制显隐,结合数组array接收Webuploader.create({…})生成的插件对象,在界面显示后(display:block),利用循环执行uploader内部函数refresh();

前两种方法相似,只是控制动态生成的文本域不同
第三种最优,利用webuploader内置函数refresh函数,对于界面资源利用更佳
核心是初始化在dom显示之后执行,否则,refresh函数需要dom显示之后执行!

 /*** 预案资源文件管理*/RES_MAN: {/*** 初始化*/init: function () {this.createWebUploader(0);this.createWebUploader(1);},/*** webUoloader对象容器*/uploader: [],/*** 文件资源ID*/resId:[],/*** 创建文件上传容器*/createWebUploader: function (index) {var resMan = this;var dropBox = $('#' + 'uploadBox' + index);var ipt = $('#' + 'filePicker' + index);resMan.uploader[index] = WebUploader.create({// 选完文件后,是否自动上传。auto: true,// swf文件路径swf: capsule.stringUtil.addPreUrl("/js/lib/webuploader/dist/Uploader.swf"),//指定Drag And Drop拖拽的容器dnd: $('#' + 'uploadBox' + index),// 文件接收服务端。server: capsule.stringUtil.addPreUrl("/data/plan/main/uploadPlanFile",{type:index}),// 选择文件的按钮。可选。// 内部根据当前运行是创建,可能是input元素,也可能是flash.pick: ipt,accept: {// 只允许选择图片文件。title: 'Images',extensions: 'jpg,jpeg,png',mimeTypes: 'image/jpg,image/jpeg,image/png'//修改这行,优化选择文件界面开启效率},// 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!resize: false});//其他事件监听},//其他界面样式控制.../*** 刷新布局定位*/refresh:function(){$.each(this.uploader,function(i,plugin){plugin.refresh();});}

源码分析

对于display:none的dom元素,offset方法获取到的值如下:

由于界面一开始是隐藏状态进行初始化的,界面初始化两个插件后:


由于绝对定位导致的的相对定位生成差异
两个按钮虽然css属性一样,确并没有重叠,细致的原因未去研究,有兴趣的可以看下css绝对的定位相关的介绍

可以看到,两个插件自动生成的offset都是0,采用上述方案优化js逻辑后:

建议

1、如果js逻辑没有问题,但是问题依然没有解决,本人遇到的是由于avalon渲染需要时间导致的,因此加了个延时,确保dom渲染完毕,再执行refresh方法即可
2、对于每次初始化控件,对界面资源的使用略显浪费,建议控制显示和隐藏,在界面初始加载的时候进行webuploader插件的初始化,初始化完毕后,点击显示后,利用延时确保dom渲染完毕后遍历uplader[],执行refresh,重新定位更佳。

/*** 确保下载容器display属性不为none*/setTimeout(function(){PageHelper.RES_MAN.refresh();},1000);

参考

WebUploader初始化时的缺陷及处理方法
webuploader插件,我踩得坑

感谢

@ssq小伙伴的帮助!

[ WebUpload ] WebUpload 插件初始化问题相关推荐

  1. 解决谷歌浏览器:Flash插件初始化失败,请更新您的FlashPlayer版本之后重试!

    解决谷歌浏览器:Flash插件初始化失败,请更新您的FlashPlayer版本之后重试! chrome浏览器使用百度编辑器给网站上传图片时,提示"flash插件初始化失败,请更新您的flas ...

  2. Paste Image插件初始化设置:修改图片保存路径、自动插入图片描述信息

    Paste Image插件初始化设置:修改图片保存路径.自动插入图片描述信息 Paste Image插件默认将图片保存于所编辑的Markdown文档的当前目录下,若插入的图片较多,会导致该目录下显得杂 ...

  3. WordPress 自定义插件初始化及卸载

    编写WordPress插件一定会碰到修改表或者增加自定义表,或者修改某一张表的数据,因为这些动作不是经常性的,仅仅只需在插件激活的时候完成,WordPress已经留好了接口,只需要在插件中调用函数 r ...

  4. CAD二次开发 插件初始化接口IExtensionApplication

    前言:在实际项目开发中,我们总会遇到一些问题.比如说在CAD打开之前,修改注册表的内容,或者解决CAD在没有完全加载想要的dll情况下,功能运行报错的bug.因此,下面和大家介绍一下IExtensio ...

  5. ps html插件初始化失败,PS插件提示 “无法加载扩展,因为它未正确签署” 解决方法...

    Adobe 更新到了 CC 2019版本以后,各种好用的插件.滤镜.扩展功能也陆续开始了更新,问题来了,也许适配新版出现了兼容问题,加载插件提示无法加载扩展,因为它未正确签署,具体什么原因,咱也不知道 ...

  6. mysql+firewall_mysql - ERROR 1123(HY000):无法初始化函数'mysql_firewall'; 插件初始化功能失败 - 堆栈内存溢出...

    我正在尝试在我的一个Linux服务器上安装并启用mysql企业防火墙. 我需要手动运行,并执行linux_install_firewall.sql脚本. 当我这样做时,执行该行 mysql> I ...

  7. ueditor图片上传 flash插件初始化失败

    [前言] 这两天维护的一个老项目,运营抱怨后台管理发布资讯 一直报浏览器flash不支持.作为后端开发只能硬着头皮来卖弄一下抠脚的前端技术. 看了一下代码 富文本编辑器用的是 ueditor ,ued ...

  8. webupload 上传

    1. css 文件 .btn-file {position: relative;overflow: hidden;vertical-align: middle; } .btn-file > in ...

  9. 百度webupload的使用

    百度上传工具webuploader,图片上传附加参数 项目中需要上传视频,图片等资源.最先做的是上传图片,开始在网上找了一款野鸡插件,可以实现图片上传预览(无需传到后台).但是最近这个插件出了莫名的问 ...

最新文章

  1. 可逆矩阵性质总结_伴随矩阵
  2. 转帖-Linux 磁盘坏道检测和修复
  3. Oracle数据库----函数
  4. WordPress.com 开源,弃 PHP 改用 JavaScript
  5. C++11新增的关键字decltype(auto)
  6. Codeforces Round #636 (Div. 3)(ABC)
  7. 51单片机使用定时器进行数码管动态扫描程序
  8. 深入理解计算机系统1——计算机系统漫游
  9. 手机有信号但是连不上网是怎么回事?
  10. 拨号720错误解决记.txt
  11. 几何画板制作抛物线,就是这么简单
  12. windows资源管理器管理工具Qttabbar个人使用总结
  13. 什么是哑终端,终端模拟器
  14. E001检测到您的环境不支持HTML5,佳能打印机故障代码、故障原因、故障排除
  15. GIS中常用专业英文术语
  16. 电脑C盘又满了?教你3个高效清理C盘的方法
  17. 《Python渗透测试编程技术:方法与实践》:信息的利用(进阶)
  18. L1-030. 一帮一
  19. Springboot企业出纳系统的设计与实现7k9je计算机毕业设计-课程设计-期末作业-毕设程序代做
  20. 高通平台开发系列讲解(外设篇)高通Camera软件架构

热门文章

  1. 【Excel技巧】合并多个Sheet为一个的方法
  2. 咪咕mgv2000爱家tv、新烽火hg680-lc、cm211-1-zg、m304a-zn固件
  3. 联阳IT1167主控量产工具教程
  4. 力扣.765情侣牵手——python
  5. 基于C语言QT开发的校园导游系统 设计文档+项目源码
  6. Codeforces Round #738 (Div. 2)——C. Mocha and Hiking
  7. html布局(两列布局的常见方式)
  8. 电信光猫网络电话SIP帐号获取方法
  9. pycharm使用tensorflow教程
  10. 联想—超融合时代的得道者