页面间跳转携带参数对象
父页面
clickDetail(item){ let objStr = JSON.stringify(item); uni.navigateTo({ url: '/pages/policy/detail?id='+item.id+'&obj='+encodeURIComponent(objStr) }); }
|
子页面
onLoad: function (options) { let objStr = decodeURIComponent(options.obj); let obj = JSON.parse(objStr); }
|
通过正则表达式替换url链接
由于小程序图片显示的组件无法配置head参数携带token变量,进而无法直接访问图片地址。通过下载图片得到临时访问路径,在替换富文本中匹配url地址,进而实现在小程序中预览富文本信息;
正则表达式解析:
/(src=')([^']*)(')/g
/和/g : 表示开始、结束 () : 表示 捕获组,括号中的内容会保存,后续引用和使用 [^'] : 表示 匹配除'号的任意字符序列
|
通过正则批量处理原html文本中url地址信息代码片段
// 示例HTML代码,包含多个img标签 let htmlString = '<image url='https://xxx.xxx.xx/'/>';
// 正则表达式匹配所有src属性 const regex = /(src=')([^']*)(')/g; let match;
// 创建一个数组来保存所有的Promise let promises = [];
// 使用循环遍历所有匹配的src属性 while ((match = regex.exec(htmlString)) !== null) { // 获取已匹配字符串数组 const [fullMatch, prefix, url, suffix] = match;
let promise = this.downloadTmpFile(url).then(newValue => { // 构建替换后的字符串 let replacement = `${prefix}${newValue}${suffix}`; // 替换原字符串中的匹配部分 htmlString = htmlString.replace(fullMatch, replacement); }).catch(err => { console.error('下载文件失败:', err); });
promises.push(promise); // 将Promise添加到数组中 }
// 使用Promise.all来等待所有的Promise解决 Promise.all(promises).then(() => { this.strings = htmlString; });
|
uniapp中调用downloadFile获取指定url链接下载的临时文件地址
downloadTmpFile(url){ return new Promise((resolve, reject) => { uni.downloadFile({ url: url, header: { 'token': uni.getStorageSync('token') }, success: (res) => { if (res.statusCode === 200) { let newValue = res.tempFilePath; resolve(newValue); // 解决Promise并返回新值 } }, fail: (err) => { reject(err); // 如果下载失败,拒绝Promise并返回错误 }, complete:(res) => { //console.log('下载完成',res); } }); }); }
|