zoukankan      html  css  js  c++  java
  • 【微信小程序】 wxParse组件

    简单介绍:

    wxParse是一个templet组件,Html代码转化成小程序的标签,目的是解决需要兼容手机端、小程序端的HTML内容。

    文件有:

    html2json.js  //将html每个标签转化成DOM对象的node
    htmlparse.js   //由html2json.js引用
    showdown.js    //由wxParse.js引用
    wxDiscode.js   //支持的符号库 
    wxParse.js     //主入口的js,和处理各种标签的事件,如图片的onload
    wxParse.wxml   //不同标签template组件,内容会循环成HTML的DOM对象,每个都转化成template,显示出来
    wxParse.wxss  //样式

    使用方法:
    js页

    //引用
    
    var WxParse = require('/wxParse/wxParse.js');
    
    //将需要转化的内容加上
    var that=this;
    WxParse.wxParse('Content1', 'html', 内容, that, 0);

    wxml页

    <template is="wxParse" data="{{wxParseData:Content1.nodes}}"/>

    wxss页

    @import "/wxParse/wxParse.wxss";

    下载文件:

    https://github.com/icindy/wxParse

    如何给图片设置真实的宽高?
    wxParse.wxml 在图片tempate里执行bindonload事件,在wxParse.js方法里,获取它的真实宽高,给它的style赋值宽高
    当宽度大于屏幕宽度时,使用屏幕宽度,高度改为:宽度  / 屏幕宽度 * 真实高度

    最后,that.setData(bindData)给了template

    //图片的onload事件
    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 || temData.images.length == 0) {
        return;
      }
    
      //给图片真实宽高,通过styleStr 20191128 S
      var recal = wxAutoImageCal(e.detail.width, e.detail.height, that, bindName); 
      var temImages = temData.images;//获取里面的images对象
      //给styleStr赋值
      var styleStr = (temImages[idx].styleStr!=undefined) ? temImages[idx].styleStr : '';
      var whStr = '' + recal.imageWidth + 'px;height:' + recal.imageheight+'px;'
      styleStr = styleStr +whStr;
      temImages[idx].styleStr = styleStr;
      temData.images = temImages;//还回去
      var bindData={};
      bindData[bindName] = temData;
      that.setData(bindData);
      console.log(bindData)
      //styleStr需要在html2json插入node里。
      //给图片真实宽高,通过styleStr 20191128 E
    
    }

    给item加了styleStr。

    <template name="wxParseImg">
        <image src="{{item.attr.src}}" class="{{item.classStr}} wxParse-{{item.tag}}" data-from="{{item.from}}" data-src="{{item.attr.src}}"  data-idx="{{item.imgIndex}}"    bindload="wxParseImgLoad" bindtap="wxParseImgTap" mode="aspectFit" mode="widthFix" style="{{item.styleStr}}max-100%;" />
    </template>
  • 相关阅读:
    Mac开发利器之程序员编辑器MacVim学习总结(转)
    FFmpeg的H.264解码器源代码简单分析
    Google推荐的图片加载库Glide
    Java集合及concurrent并发包总结(转)
    ArrayList、Vector和LinkedList等的差别与用法(基础回顾)
    应用最广泛的模式-工厂方法模式
    Android 开发 命名规范(基础回顾)
    Java线程问题(基础回顾)
    Mac下使用wireshark解决Interface为空的办法
    Express4.10.2开发框架中默认app.js的代码注释
  • 原文地址:https://www.cnblogs.com/laokchen/p/11954531.html
Copyright © 2011-2022 走看看