起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3843|回复: 0

[分享] 通知公告类页面的图片点击下载

[复制链接]

97

主题

580

帖子

1359

积分

金牌会员

Rank: 6Rank: 6

积分
1359
QQ
发表于 2021-2-9 15:33:13 | 显示全部楼层 |阅读模式
本帖最后由 carbinechun 于 2021-2-9 15:34 编辑

        误打误撞,结果发现一点有趣的东西,分享出来如有需要的可以参考一下。
        通知公告明细页,把html格式的内容通过bind-html加载到一个div里面,这样内容就会按html样式正常展示了。最近需求有变化,想在内容里有图片的时候可以下载图片,此为背景。
        好久没搞这一块了,又翻了好久的源码和贴子,但找到的和实际需求还是有出入的,正常的都是图片的选取处理,其他处理的少之又少。但在翻帖子过程中还是看到有个关于图片下载的有效信息。忘具体哪一个了,这里就不再发链接了,实际用的就是引用system/api/native/image.js,然后通过image.httpToAlbum方法来进行网络图片的下载,需求做到这里,已经完成一半了,但上面说了,这些内容是放在div里面的,如果内容里有多图片的话,又要怎么做到点哪一个图片就能下载哪一个图片呢?点图片之外的地方不需要任何提示呢?
        这么思考是因为div里面的处理,肯定是针对本div的相关事件,内容是整体的,想做到在内容里再单独处理那应该也能实现,但很繁琐,直接点的思路就是把div对应的bind-html的内容找到图片块源码然后进行替换,加上点击处理事件,每个图片加一个,想想挺麻烦,当然,个人水平有限,可能猿友有其他好的思路,也可以分享出来供大家参阅,反正我一直以wex5菜鸟自居,懒得多学,凑合着用。废话不多说,刚才我个人的解决办法一看就很繁琐。但因为我也是水平有限的原因,只能在div的单击事件里自行尝试,结果就有了这次的分享内容。具体处理如下:

  1.         Model.prototype.infoDivDblclick = function(event){
  2.                  var self = this;
  3.                  var url = event.target.src;
  4.                  if(url){
  5.                  ...
  6.                  }
  7.         };
  8.         
复制代码

重点就在url获取,通过event.target.src,能获取到点击时的url,这里的url,就是内容里面点击到的网络图片的地址,如果不是点击的图片,那么url就没有值,通过此项判断,便可以完全解决上面提到的两个问题。具体原理我懒得去探寻了,这个target还是有待深入了解的。问题解决了,而且很简便,所以高兴之余分享出来,如还有坚持用wex5的简单参考一下,节省部分时间。
    另附上下载图片的源码吧,想做图片处理的建议看下上面提到的那个js文件,几个函数都很有用,说不得哪个就是你需要的。

  1.         Model.prototype.downLoadImg = function(url){
  2.                  var self = this;
  3.                  console.log("enter downLoadImg...");
  4.                  debugger;
  5.                  image.httpToAlbum({
  6.             serverId : url,
  7.             success : function(res) {
  8.                      debugger;
  9.                      console.log('图片下载成功~');
  10.                      justep.Util.hint("图片已成功保存至本机相册...", {type:'info',position:'bottom'});
  11. //                     self.comp("messageDialog2").show({callback : function(param){
  12. //                                                 debugger;
  13. //                                                 if(param.button == "yes"){
  14. //                                                         var filename = url.substring(serverId.lastIndexOf("/") + 1);
  15. //                                                         var fullName = Utils.getCacheDirectoryPath(filename);
  16. ////                                                         $(self.getElementByXid('inputImage')).click();
  17. //                                                 }
  18. //                                         }});
  19.             },
  20.             fail : function(res) {
  21.                      debugger;
  22.                      console.log('图片下载失败~');
  23.             }
  24.         });
  25.         };
  26.         
复制代码

其他源码没啥难度,不多显示了。。。下载图片里面注释掉的是我个人想着下载完成后弹出对话框,立即查看的话进行图片查看的,后来确认了下没这需求我也就不多写了,到这里需求算是圆满完成,二次开发没太多的周折,收工准备过年吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-26 09:26 , Processed in 0.062372 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表