zoukankan      html  css  js  c++  java
  • wxParse 问题总结 图片不显示+排版不显示

    最近项目遇到了 百度富文本内容显示在微信小程序上的情景

    用到了 wxPrase组件 在此记录一下使用方法及遇到的问题和解决办法

    使用方法:

    1.下载文件

    https://github.com/icindy/wxParse 下载wxParse文件到小程序目录中

    2.引入文件

    /*js*/
    1
    //在使用的页面js中引入WxParse模块 2 var WxParse = require('../../wxParse/wxParse.js');
    /*wxss*/ 4 //在使用的Wxss中引入WxParse.css,可以在app.wxss 5 @import "/wxParse/wxParse.wxss";

    3.绑定数据及页面引用

     /*js文件*/
    1
    var data= '<div>我是HTML代码</div>'; 2 /** 3 * WxParse.wxParse(bindName , type, data, target,imagePadding) 4 * 1.bindName绑定的数据名(必填) 5 * 2.type可以为html或者md(必填) 6 * 3.data为传入的具体数据(必填) 7 * 4.target为Page对象,一般为this(必填) 8 * 5.imagePadding为当图片自适应是左右的单一padding(默认为0,可选) 9 */ 10 var that = this; 11 WxParse.wxParse('article', 'html', data, that, 0);

    这里注意 imagePadding 填0比较好 在外部盒子设置宽度 边距 

    例:

    /* wxml */
    <view style="94%;margin:0 auto"> <import src="你的路径/wxParse/wxParse.wxml"/> //这里data中article为bindName <template is="wxParse" data="{{wxParseData:data.nodes}}"/> </view>

    更多使用方法 可以去github上查看

    问题及解决方法:

    1.富文本容易嵌套很多层,WxParse用以循环解析的模板有11层,如果只是简单的百度富文本编辑器提交的内容是够用的,但是如果加上复杂的样式(如下),

    就需要手动添加很多层,我暂时用了比较笨的方法手动加到了50层……

    官方给的解决方案:https://github.com/icindy/wxParse/wiki/wxParse-%E5%A6%82%E4%BD%95%E9%87%8D%E5%A4%8D%E5%B5%8C%E5%A5%97%E6%A8%A1%E7%89%88

    2.图片路径问题

    直接用百度文本编辑的图片不带域名,而直接粘贴的图文,图片是带着外部链接的。这里需要用wxs写个函数处理一下

    2.1图片显示

    1  <wxs src="./imgsrc.wxs" module="getImgSrc" />
    
    11 <template name="wxParseImg"> 12 <image class="{{item.classStr}} wxParse-{{item.tag}}" data-from="{{item.from}}" data-src="{{getImgSrc.getImgSrc(item.attr.src)}}" 13 data-idx="{{item.imgIndex}}" src="{{getImgSrc.getImgSrc(item.attr.src)}}" mode="aspectFit" 14 bindload="wxParseImgLoad" bindtap="wxParseImgTap" mode="widthFix" style="{{item.width}}px;" /> 15 </template>

     1 var getImgSrc = function (src) {
     2   var a = getRegExp("http", "img");
     3   var b = a.test(src)
     4   if (b) {
     5     return src;
     6   } else {
     7     src = 'https://域名' + src
     8     return src;
     9   }
    10 }
    11 
    12 module.exports = {
    13   getImgSrc: getImgSrc
    14 }

    2.2图片点击事件

    因为图片路径的问题,点击事件中也需要改一下图片路径

     1 // 图片点击事件
     2 function wxParseImgTap(e) {
     3   var that = this;
     4   var nowImgUrl = e.target.dataset.src;
     5   var tagFrom = e.target.dataset.from;
     6   var imageUrls = [];
     7   that.data[tagFrom].imageUrls.forEach(function (item, index, arr) {
     8     if (item.indexOf('http') == 0) {
     9       imageUrls.push(item)
    10     } else {
    11       imageUrls.push('https://域名' + item)
    12     }
    13   })
    14   if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) {
    15     wx.previewImage({
    16       current: nowImgUrl, // 当前显示图片的http链接
    17       urls: imageUrls // 需要预览的图片http链接列表
    18     })
    19   }
    20 }

    改动代码地址:https://gitee.com/svv2020/wx-parse.git

    如果文章对您有帮助 欢迎打赏~

     

  • 相关阅读:
    Ynoi 杂题选做
    CSP-S2021 浙江 游记
    P6272 [湖北省队互测2014]没有人的算术
    P5206 [WC2019]数树
    P5405 [CTS2019]氪金手游
    LOJ6679 Unknow
    LOJ3040 「JOISC 2019 Day4」合并
    P6122 [NEERC2016]Mole Tunnels
    三维凸包
    三,四元环计数
  • 原文地址:https://www.cnblogs.com/svvv/p/14071524.html
Copyright © 2011-2022 走看看