收藏
回答

rich-text怎么实现图片预览

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 需求 rich-text 客户端 iOS 1 1

rich-text怎么实现图片预览

回答关注问题邀请回答
收藏

14 个回答

  • Bright
    Bright
    2019-10-09

    我也遇到这个问题了,想了个曲线救国的办法,点击组件 rich-text 然后拿到它的所有文本,以字符串截取的形式、用正则获取文本中所有的src路径,然后把这些路径存放在新数组中,直接调用图片预览,这是我写的练习,测试了可以,缺陷是不能按照点击图片的顺序预览,只能从头预览

    test:function(e){

    let that=this

    console.log("e", this.data.htmlVal)

    let arr=[];

    let reg = /(?<=(src="))[^"]*?(?=")/ig

    let allSrc = that.data.htmlVal.match(reg)

    for (let i = 0; i<allSrc.length;i++){

    console.log("e000", allSrc[i])

    arr.push(allSrc[i])

    that.setData({

    imageArray:arr

    })

    }

    wx.previewImage({

    current: that.data.imageArray, // 当前显示图片的http链接  

    urls: that.data.imageArray // 需要预览的图片http链接列表  

    })

    }

    <rich-text nodes="{{htmlVal}}" bindtap="test"></rich-text>


    2019-10-09
    有用 4
    回复 5
    • YuLin
      YuLin
      2019-10-20
      用上了,由于wxParse的排版对于我的文章很不友好,最后选择了曲线救国
      2019-10-20
      回复
    • YuLin
      YuLin
      2019-10-21
      今天发现该正则在IOS上无法正常运行,会导致整个小程序启动白屏,不知道前辈有没有解决方法
      2019-10-21
      回复
    • Bright
      Bright
      2019-10-24回复YuLin
      我也发现这个问题了,两种方式:第一种,打包js正则的双斜杠不识别就替换一下,let reg = new RegExp('(?<=(src="))[^ "]*?(?=")',' 第二种,让后台返回数据给你,这个正则在后台运行就行
      2019-10-24
      回复
    • .
      .
      2021-07-29
      只能预览第一张,第二张以后的一直加载有什么解决办法吗
      2021-07-29
      回复
    • .
      .
      2021-07-29
      打印了一下,第一张图片被push进了数组,第二张只push了"src="字符串
      2021-07-29
      回复
  • JJ
    JJ
    2018-04-25

    那有什么办法能把富文本组件中的图片放大显示啊?不然用户根本看不清楚啊。

    2018-04-25
    有用 3
    回复
  • 我的章鱼小丸子~
    我的章鱼小丸子~
    2019-08-10

    可以把内容中图片提取出来  不过没法定位点击哪张图片预览

    2019-08-10
    有用
    回复
  • 江江
    江江
    2018-06-13

    在img里写bindtap也解析不出来,用wxparse有个问题,当富文本结构复杂的时候不可能一个个的赋变量,然后调用模板,循环套循环,单个模板要怎么实现了

    2018-06-13
    有用
    回复
  • JJ
    JJ
    2018-05-03

    那就是不能直接把这样的结构赋值给富文本组件显示了,要全部换成调用模版了。。

    2018-05-03
    有用
    回复
  • JJ
    JJ
    2018-05-03

    难度好大。。。

    2018-05-03
    有用
    回复
  • 张明Ming Zhang
    张明Ming Zhang
    2018-05-03

    刚才的说法有些误导人,应该理解成封闭容器比较好,毕竟所有富文本标签都是按照规定的属性来的

    2018-05-03
    有用
    回复
  • 张明Ming Zhang
    张明Ming Zhang
    2018-05-03

    针对楼上的方案做简单的回答:

    1、你可以把 rich-text 理解成一个容器,容器内的元素是没法添加事件的,容器内的元素是没法添加事件的,是没法添加事件的,也就是点击富文本,事件只是在 rich-text 上触发。

    2、如果需求是需要点击图片预览,那你现在只是做了一半工作,剩下的工作就是把 nodes<Array>再转成微信小程序的template格式,例如你需要图片事件点击,那就要把数据转成image组件,实现类似这样的模板 https://github.com/icindy/wxParse/blob/master/wxParse/wxParse.wxml#L21。

    2018-05-03
    有用
    回复
  • JJ
    JJ
    2018-05-03

    我自己做了个节点解析的,解析出来是  rich-text 要求的结构:

    [{
          name: 'img',
          attrs: {
            src: '图片地址'
          }
        }]

    关键是怎么给这个图片节点绑定点击事件?能指点写个简单的例子吗?我目前已经把节点全部解析好了,需求就是怎么触发事件?因为平常网页都可以直接给某个元素绑定事件,你们这个组件里面我怎么做能实现?

    2018-05-03
    有用
    回复
  • 张明Ming Zhang
    张明Ming Zhang
    2018-05-02

    暂时不支持 rich-text 的预览功能,不过你可以对文本节点做解析,抽成一个 wx-parser 模块,具体参考 https://github.com/ifanrx/wxParser 的实现原理。

    2018-05-02
    有用
    回复

正在加载...

登录 后发表内容