微信小程式富文字寫法
JS:
引用的JS
var WxParse = require('../common/wxParse/wxParse.js');
富文字詳情JS
var introduce = WxParse.wxParse('introduce', 'html', res.data.dat[0].introduce,
that, 5);
WXML:
引用的WXML
<import src="../common/wxParse/wxParse.wxml" />
富文字詳情WXML
<view class="content">
<view class="wxParse">
<template is="wxParse" data="{{wxParseData:introduce.nodes}}" />
</view>
</view>
被引用的JS: wxParse.js
/**
* 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';
/**
* 配置及公有屬性
**/
var realWindowWidth = 0;
var realWindowHeight = 0;
wx.getSystemInfo({
success: function (res) {
realWindowWidth = res.windowWidth
realWindowHeight = res.windowHeight
}
})
/**
* 主函式入口區
**/
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 || 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);
var index = temImages[idx].index
var key = `${bindName}`
for (var i of index.split('.')) key += `.nodes[${i}]`
var keyW = key + '.width'
var keyH = key + '.height'
that.setData({
[keyW]: recal.imageWidth,
[keyH]: recal.imageheight,
})
}
// 計算視覺優先的圖片寬高
function wxAutoImageCal(originalWidth, originalHeight, that, bindName) {
//獲取圖片的原始長寬
var windowWidth = 0, windowHeight = 0;
var autoWidth = 0, autoHeight = 0;
var results = {};
var padding = that.data[bindName].view.imagePadding;
windowWidth = realWindowWidth - 2 * padding;
windowHeight = realWindowHeight;
//判斷按照那種方式進行縮放
// 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,
wxParseImgTap: wxParseImgTap
}
相關文章
- 微信小程式 – 富文字圖片寬度自適應(正則)微信小程式
- 微信小程式圖文編輯元件開發(偽富文字編輯)微信小程式元件
- 微信小程式 文字超出省略號微信小程式
- 【微信小程式】微信小程式 文字過長,自動換行的問題微信小程式
- 微信小程式之文字向上滾動效果微信小程式
- 小程式data巢狀寫法巢狀
- 微信小程式過長文字摺疊效果的探索微信小程式
- 【開源我寫的富文字】打造全網最勁富文字系列之技術選型
- Natsuha - 用Taro寫個天氣微信小程式微信小程式
- iOS使用NSMutableAttributedString實現富文字小結iOS
- 填寫設定小程式資訊-微信小程式開發-視訊教程3微信小程式
- 微信小程式微信小程式
- 教你用微信小程式快速提取圖片上的文字微信小程式
- 微信小程式 MinUI 元件庫系列之 elip 文字截斷元件微信小程式UI元件
- 微信小程式小技巧微信小程式
- 用 mpvue 寫個【微博-青銅版】微信小程式Vue微信小程式
- 用Taro寫一個微信小程式(三)—— 配置dva微信小程式
- UILable富文字UI
- 富文字 XSS
- 匹配純小寫英文字元正則程式碼字元
- 【微信小程式canvas】實現小程式手寫板使用者簽名(附程式碼)微信小程式Canvas
- 我的第一個微信小程式 (Discuz!! + 微信小程式)微信小程式
- 我的第一個微信小程式 (Discuz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + 微信小程式)微信小程式
- 微信小程式(1) 微信小程式TLS版本大於1.2微信小程式TLS
- 首個微信小程式開發教程,通宵吐血寫的!微信小程式
- 微信小程式小總結微信小程式
- 微信小程式路由微信小程式路由
- 微信小程式WXML頁面常用語法(講解+示例)微信小程式XML
- 微信小程式版本控制工具無法關閉的bug微信小程式
- sql寫法小記SQL
- Jquery會死嗎?我為什麼不用vue寫富文字!jQueryVue
- webdriver中利用js來向富文字框書寫內容WebJS
- 微信小程式微信支付流程微信小程式
- 【開源我寫的富文字】打造全網最勁富文字系列之大話技術難點與特色設計。
- 【開源我寫的富文字】打造全網最勁富文字技術選型之經典OOP仍是魅力硬核。OOP
- 微信小程式是什麼 微信小程式有什麼用?微信小程式
- swift——富文字文字的簡單使用Swift
- 富文字編譯器編譯