| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 | 
							- /**
 
-  * author: Di (微信小程序开发工程师)
 
-  * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
 
-  *               垂直微信小程序开发交流社区
 
-  * 
 
-  * github地址: https://github.com/icindy/wxParse
 
-  * 
 
-  * for: 微信小程序富文本解析
 
-  * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
 
-  */
 
- /**
 
-  * utils函数引入
 
-  **/
 
- import showdown from 'showdown.js';
 
- import HtmlToJson from 'html2json.js';
 
- /**
 
-  * 配置及公有属性
 
-  **/
 
- /**
 
-  * 主函数入口区
 
-  **/
 
- function wxParse(bindName = 'wxParseData', type='html', data='<div class="color:red;">数据不能为空</div>', target,imagePadding) {
 
-   var that = target;
 
-   var transData = {};//存放转化后的数据
 
-   if (type == 'html') {
 
-     transData = HtmlToJson.html2json(data, bindName);
 
-     console.log(JSON.stringify(transData, ' ', ' '));
 
-   } else if (type == 'md' || type == 'markdown') {
 
-     var converter = new showdown.Converter();
 
-     var html = converter.makeHtml(data);
 
-     transData = HtmlToJson.html2json(html, bindName);
 
-     console.log(JSON.stringify(transData, ' ', ' '));
 
-   }
 
-   transData.view = {};
 
-   transData.view.imagePadding = 0;
 
-   if(typeof(imagePadding) != 'undefined'){
 
-     transData.view.imagePadding = imagePadding
 
-   }
 
-   var bindData = {};
 
-   bindData[bindName] = transData;
 
-   that.setData(bindData)
 
-   that.wxParseImgLoad = wxParseImgLoad;
 
-   that.wxParseImgTap = wxParseImgTap;
 
- }
 
- // 图片点击事件
 
- function wxParseImgTap(e) {
 
-   var that = this;
 
-   var nowImgUrl = e.target.dataset.src;
 
-   var tagFrom = e.target.dataset.from;
 
-   if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) {
 
-     wx.previewImage({
 
-       current: nowImgUrl, // 当前显示图片的http链接
 
-       urls: that.data[tagFrom].imageUrls // 需要预览的图片http链接列表
 
-     })
 
-   }
 
- }
 
- /**
 
-  * 图片视觉宽高计算函数区 
 
-  **/
 
- function wxParseImgLoad(e) {
 
-   var that = this;
 
-   var tagFrom = e.target.dataset.from;
 
-   var idx = e.target.dataset.idx;
 
-   if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) {
 
-     calMoreImageInfo(e, idx, that, tagFrom)
 
-   } 
 
- }
 
- // 假循环获取计算图片视觉最佳宽高
 
- function calMoreImageInfo(e, idx, that, bindName) {
 
-   var temData = that.data[bindName];
 
-   if (temData.images.length == 0) {
 
-     return;
 
-   }
 
-   var temImages = temData.images;
 
-   //因为无法获取view宽度 需要自定义padding进行计算,稍后处理
 
-   var recal = wxAutoImageCal(e.detail.width, e.detail.height,that,bindName); 
 
-   temImages[idx].width = recal.imageWidth;
 
-   temImages[idx].height = recal.imageheight; 
 
-   temData.images = temImages;
 
-   var bindData = {};
 
-   bindData[bindName] = temData;
 
-   that.setData(bindData);
 
- }
 
- // 计算视觉优先的图片宽高
 
- function wxAutoImageCal(originalWidth, originalHeight,that,bindName) {
 
-   //获取图片的原始长宽
 
-   var windowWidth = 0, windowHeight = 0;
 
-   var autoWidth = 0, autoHeight = 0;
 
-   var results = {};
 
-   wx.getSystemInfo({
 
-     success: function (res) {
 
-       var padding = that.data[bindName].view.imagePadding;
 
-       windowWidth = res.windowWidth-2*padding;
 
-       windowHeight = res.windowHeight;
 
-       //判断按照那种方式进行缩放
 
-       console.log("windowWidth" + windowWidth);
 
-       if (originalWidth > windowWidth) {//在图片width大于手机屏幕width时候
 
-         autoWidth = windowWidth;
 
-         console.log("autoWidth" + autoWidth);
 
-         autoHeight = (autoWidth * originalHeight) / originalWidth;
 
-         console.log("autoHeight" + autoHeight);
 
-         results.imageWidth = autoWidth;
 
-         results.imageheight = autoHeight;
 
-       } else {//否则展示原来的数据
 
-         results.imageWidth = originalWidth;
 
-         results.imageheight = originalHeight;
 
-       }
 
-     }
 
-   })
 
-   return results;
 
- }
 
- function wxParseTemArray(temArrayName,bindNameReg,total,that){
 
-   var array = [];
 
-   var temData = that.data;
 
-   var obj = null;
 
-   for(var i = 0; i < total; i++){
 
-     var simArr = temData[bindNameReg+i].nodes;
 
-     array.push(simArr);
 
-   }
 
-   temArrayName = temArrayName || 'wxParseTemArray';
 
-   obj = JSON.parse('{"'+ temArrayName +'":""}');
 
-   obj[temArrayName] = array;
 
-   that.setData(obj);
 
- }
 
- /**
 
-  * 配置emojis
 
-  * 
 
-  */
 
- function emojisInit(reg='',baseSrc="/wxParse/emojis/",emojis){
 
-    HtmlToJson.emojisInit(reg,baseSrc,emojis);
 
- }
 
- module.exports = {
 
-   wxParse: wxParse,
 
-   wxParseTemArray:wxParseTemArray,
 
-   emojisInit:emojisInit
 
- }
 
 
  |