微信小程序 加载 HTML 标签
肯定有小伙伴遇到过这个问题:加载的数据是一堆HTML 标签
这就尴尬了,因为小程序没有提供 webview 来加载这些 HTML.但是不用慌,小程序不提供我们可以自己造个新轮子,自己造不出新轮子咱们找到一个合适的轮子拿来用!这里用到的轮子就是这个:wxParse.他的介绍可以去 github 主页学习,这里简要记录使用过程.(项目地址链接)
本文由百牛信息技术bainiu.ltd整理发布于博客园
接口是截取的网易新闻的新闻详情接口,数据格式大家自行格式化观察.这里在做 HTML 处理的时候遇到了两个小问题.
1.返回数据中包含非 HTML 标签的内容,这会导致加载数据时解析失败.
2.一些新闻详情会有配图,配图的位置是通过一些标识字符串加到内容里,不是直接加载出来.
首先来看第一个问题.其实这个问题很好解决,直接获取到要加载的内容,找到这些非 HTML 字符串将他们替换成空字符串,问题就迎刃而解了.下面是关键的代码;
- <span style="font-size:18px;"> <span style="white-space:pre"> </span>//替换标签中特殊字符 这里观察返回数据找到非 HTML 字符串,随后将该字符串替换成空字符串.
- var infoFlg = "<!--SPINFO#0-->";
- if (content.indexOf(infoFlg) > 0) {
- content = content.replace(/<!--SPINFO#0-->/, "");
- }</span>
第二个问题思路也是这样,将标识图片位置的非 HTML 字符串替换成 HTML 标签就解决了.
- <span style="font-size:18px;"><span style="white-space:pre"> </span>var imgFlg = "<!--IMG#";
- //图片数量
- var imgCount = (content.split(imgFlg)).length-1;
- if (imgCount > 0) {
- console.log("有dd" + imgCount + "张图片");
- for (var i = 0; i < imgCount; i++) {
- var imgStr = "<!--IMG#" + i + "-->";
- var imgSrc = "\"" + imgInfoArr[i].src + "\"";
- var imgHTML = "<div> <img style=\"width:100%\" src=" +imgSrc+ "> </div>";
- content = content.replace(imgStr, imgHTML);
- }
- }</span>
最后加载数据,
- <span style="font-size:18px;"><span style="white-space:pre"> </span>var article = title + source + content ;
- WxParse.wxParse('article', 'html', article, self,imgCount);</span>
wxml 页面代码如下
- <span style="font-size:18px;"><import src="../../wxParse/wxParse.wxml"/>
- <loading hidden = "{{hide}}">加载中...</loading>
- <view class="wxParse">
- <template is="wxParse" data="{{wxParseData:article.nodes}}"/>
- </view></span>
js 页面详细代码如下:
- <span style="font-size:18px;">var WxParse = require('../../wxParse/wxParse.js');
- Page({
- data: {
- },
- onLoad: function(options) {
- //http://c.m.163.com/nc/article/CADGA4VH0001875N/full.html
- var self = this;
- var optionId = options.id;
- console.log(optionId);
- wx.request( {
- url: 'http://c.m.163.com/nc/article/' +optionId+ '/full.html',
- header: {
- "Content-Type": "application/json"
- },
- method: "GET",
- data: {
- },
- success: function( res ) {
- var data = res.data[optionId];
- var imgInfoArr = res.data[optionId].img;
- //替换标签中特殊字符
- var infoFlg = "<!--SPINFO#0-->";
- var imgFlg = "<!--IMG#";
- var title = " <p style=\"margin:15px 15px; line-height: 20px;\"> " + res.data[optionId].title + "</p>";
- var source = " <p style=\"margin:15px 15px; font-size: 14px; color:darkgray \">来源于: " + res.data[optionId].source + "</p>";
- var content = "<div style=\"margin:10px; line-height:25px; font-weight:200; font-size:17px; color:black; word-break:normal\">" + res.data[optionId].body + "</div>";
- //替换标签中特殊字符
- var infoFlg = "<!--SPINFO#0-->";
- if (content.indexOf(infoFlg) > 0) {
- content = content.replace(/<!--SPINFO#0-->/, "");
- }
- var imgFlg = "<!--IMG#";
- //图片数量
- var imgCount = (content.split(imgFlg)).length-1;
- if (imgCount > 0) {
- console.log("有dd" + imgCount + "张图片");
- for (var i = 0; i < imgCount; i++) {
- var imgStr = "<!--IMG#" + i + "-->";
- var imgSrc = "\"" + imgInfoArr[i].src + "\"";
- var imgHTML = "<div> <img style=\"width:100%\" src=" +imgSrc+ "> </div>";
- content = content.replace(imgStr, imgHTML);
- }
- }
- var article = title + source + content ;
- WxParse.wxParse('article', 'html', article, self,imgCount);
- setTimeout (function () {
- self.setData({
- hide: true
- })
- }, 500)
- }
- });
- }
- })</span>
最后的效果图如下
微信小程序 加载 HTML 标签的更多相关文章
- 微信小程序 加载图片时,先拉长,再恢复正常
今天在写小程序,发现小程序的图片image如过mode设置为widthFix的话, 加载图片会被先拉伸,后恢复正常 我的处理方法是,给他一个初始的height值,或者就直接 height:auto
- 微信小程序加载本地图片方法
目录结构如下,只要图片按正确的方式放入小程序的开发工具的项目中,即可在wxml文件中用内联样式或者image标签都可以引用本地的图片. 步骤一:微信开发工具 打开项目 步骤二:新建个文件夹(放项目的一 ...
- 微信小程序(五)-常见组件(标签)
常见组件(标签) https://developers.weixin.qq.com/miniprogram/dev/component/ 1.view 代替以前的div标签 2.text 1.文本标签 ...
- 利用机器学习实现微信小程序-加减大师自动答题
之前有看到微信小程序<跳一跳>别人用python实现自动运行,后来看到别人用hash码实现<加减大师>的自动答题领取娃娃,最近一直在研究深度学习,为啥不用机器学习实现呢?不就是 ...
- [Cocos Creator]安卓上微信小游戏加载到100%就进不去了
最近用Cocos Creator 开发微信小游戏,构建发布到微信上,用安卓手机预览打开后加载到100%就不动了,开始以为微信开发工具版本的问题,后来用苹果的手机测试了一下,发现也有同样的问题. 仔细分 ...
- mpvue 小程序加载不了图片 Error: Failed to load local image resource /images/xx.png the server responded with a status of 404 (HTTP/1.1 404 Not Found)
mpvue开发小程序时候,要添加静态本地图片 <img src="../../images/bg.png" alt=""> 会报错: VM14878 ...
- mpvue小程序加载不出图片 Failed to load local image resource /images/xx.png
解决方法: 直接写 /static/img/xx.png(一定要从 "/static" 开始,不要写成 "../../static" ,当然static里面也可 ...
- 小程序加载大图片 使用widthFix时,图片先拉伸然后才显示完全
<image src="http://www.ll.com/sss.jpg" mode="widthFix" style="width:180r ...
- mpvue小程序加载不出图片 Failed to load local image resource
我的GitHub博客,很多内容可以看,喜欢的给星星哦 https://github.com/liangfengbo/frontend 第一道:图片引入本地静态文件失效? mpvue开发小程序时候,要添 ...
随机推荐
- 30天自制操作系统(三)进入32位模式并导入C语言
1 制作真正的IPL IPL(Initial Program Loader),启动程序装载器,但是之前并没有实质性的装载任何程序,这次作者要开始装载程序了. 虽然现在开发的操作系统啥功能也没有,作者说 ...
- java List复制:浅拷贝与深拷贝
Java的拷贝可以分为三种:浅拷贝(Shallow Copy).深拷贝(Deep Copy).延迟拷贝(Lazy Copy). 在java中除了基本数据类型之外(int,long,short等),还存 ...
- 【文献阅读】Stack What-Where Auto-encoders -ICLR-2016
一.Abstract 提出一种新的autoencoder -- SWWAE(stacked what-where auto-encoders),更准确的说是一种 convolutional autoe ...
- 嵌入式驱动开发之---Linux ALSA音频驱动(一)
本文的部分内容参考来自DroidPhone的博客(http://blog.csdn.net/droidphone/article/details/6271122),关于ALSA写得很不错的文章,只是少 ...
- java jdbc 同时操作查询删除操作
Connection conn = null; try { // 创建连接实例 conn = JdbcUtility.GetFactory() ...
- python 基础 7.5 commands 模块
一. commands 模块 1.commands 模块只使用与linxu 的shell 模式下 在我们平时码字时,经常需要调用系统脚本或者系统命令来解决很多问题,接下来,我们就介绍给大家一个很好 ...
- 【BZOJ2843】极地旅行社 离线+树链剖分+树状数组
[BZOJ2843]极地旅行社 Description 不久之前,Mirko建立了一个旅行社,名叫“极地之梦”.这家旅行社在北极附近购买了N座冰岛,并且提供观光服务.当地最受欢迎的当然是帝企鹅了,这些 ...
- Pentaho BIServer Community Edtion 6.1 使用教程 第三篇 发布和调度Kettle(Data Integration) 脚本 Job & Trans
Pentaho BIServer Community Edtion 6.1 集成了 Kettle 组件,可以运行Kettle 程序脚本.但由于Kettle没有直接发布到 BIServer-ce 服务的 ...
- 常见C C++问题(转)
这一部分是C/C++程序员在面试的时候会被问到的一些题目的汇总.来源于基本笔试面试书籍,可能有一部分题比较老,但是这也算是基础中的基础,就归纳归纳放上来了.大牛们看到一笑而过就好,普通人看看要是能补上 ...
- Apache NiFi 开发 处理器使用说明
NIFI的使用: 注意:FlowFile由[属性]和[内容]组成,在解析的过程中这个概念非常重要,因为有些组件操作的是属性,有些组件操作的是内容,在配置组件时Destination配置项的选择很重要, ...