Ionic4--应用内显示微信公众号文章

因为微信公众号文章具有防盗链,所以不能直接用iframe内嵌显示文章内容。下面是解决问题的步骤

1、请求链接,获取整个html

//微信公众号文章内容
  getWeixinContent(URL:any){
    let http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
    let realurl = http + '//cors-anywhere.herokuapp.com/' + URL;
    if (this.tool.deviceType()) {//判断是原生还是web,原生走httpApp,web走axios
      return new Promise((resove, reject) => {

        this.httpApp.get(URL, {}, {}).then((response) => {//原生不需要处理url
          let html = response.data;
          html = html.replace(/data-src/g, "src")
                     .replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/g, '')
                     .replace(/style="visibility: hidden;"/,'style="visibility: visible;"')
                    // .replace(/https/g,'http');网上资料都说加这个方法,但是我加了之后图片不显示,去掉之后图片显示
          let html_src =  html;

          resove(html_src);
        }).catch((error) => {
          reject(error);
        })
      })
    }else{
      return new Promise((resove, reject) => {
        axios({
          url: realurl,
          method: 'get',
        }).then((response) => {
          let html = response.data;
          html = html.replace(/data-src/g, "src")
                    .replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/g, '')
                    .replace(/style="visibility: hidden;"/,'style="visibility: visible;"')
                    // .replace(/https/g,'http');
          let html_src =  html;
  
          resove(html_src);
        }).catch((error) => {
          reject(error);
        });
      })
    }
    
  }

2、使用innerHTML来显示内容

//ts
this.common.getWeixinContent(res.data.link).then((res:any)=>{            
    this.content = this.sanitizer.bypassSecurityTrustHtml(res);//获取返回Html
}).catch((err:any)=>{
})

//html
 <div [innerHTML]="content" *ngIf="content" class="contentCSS"></div>//显示内容

3、<meta name="referrer" content="never">这句话也要加

 

----------------------------------------------------------------------------

新加 .replace(/style="visibility: hidden;"/,'style="visibility: visible;"')替换规则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值