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="width: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="width:{{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

 

如果文章對您有幫助 歡迎打賞~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM