iframe显示微信公众号文章

最近在做一个案例页面,主要结构就是列表和内容,还有固定的头部和底部(方便查看价格及购买),因为之前的案例详情页是很多的固定页面,这样不太方便维护,现在其他同事需要展示不同的案例,所以就从新整理了一下这块:

1、列表页就是很普通的,请求数据,包含一张图片、一句简要说明、一个微信文章链接,图片和文字展示在列表页,链接是当点击图片是跳转(就是div显示隐藏)显示对应的文章;

2、详情页就是将点击的链接赋值给iframe的src,但是这里问题还是比较多的:

  微信公众号文章的图片做了处理,在外域使用的话,图片是显示不出来的,所以在给iframe赋值链接的时候是需要做些处理的,从网上查找资料,使用的是基于jquery的一个方法: 

    $.ajaxPrefilter( function (options) {        if (options.crossDomain && jQuery.support.cors) {            var http = (window.location.protocol === ‘http:‘ ? ‘http:‘ : ‘https:‘);            options.url = http + ‘//cors-anywhere.herokuapp.com/‘ + options.url;        };    });    var showSrc = 微信文章地址

     $.get( showSrc, function (response){
          var html = response;
        html = html.replace(/data-src/g, "src").replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/g, ‘‘).replace(/https/g,‘http‘);

        var html_src = ‘data:text/html;charset=utf-8,‘ + html;

        iframe.attr("src" , html_src);

        //var bodyInner = thisV.getBody(html,REG_BODY);
          //bodyInner = ‘<div class="bodyHtml">‘+bodyInner +‘</div>‘
        //$(‘.casesCon‘).append(bodyInner);
    });


  上面$.ajaxPrefilter函数是指定预先处理ajax参数选项的回调函数,  在所有参数选项被ajax函数处理之前,可以使用该函数设置的回调函数来预先更改任何参数选项。  还可以指定数据类型(dataType),从而只预先处理指定数据类型的参数选项。  该函数可以调用多次,以便为不同数据类型的ajax请求指定不同的回调函数。  该函数属于全局jQuery对象。  用法:jQuery.ajaxPrefilter([ dataType ] , handler)  dataType(string):可用的数据类型为:xml、html、text、json、jsonp、script,一个或多个数据类型,使用空格隔开:"xml json html";  handler(Function):可有3个参数options、originalOptions、jqXHR;  具体可查看 http://www.css88.com/jqapi-1.9/jQuery.ajaxPrefilter/   在我的这个项目里,就是将下面get请求的地址重新处理了一下,在请求地址修改为:http://cors-anywhere.herokuapp.com/微信文章地址,  http://cors-anywhere.herokuapp.com这个网址是一个处理跨域请求的地址,以我这个项目简单说明一下,就是将我需要的微信文章地址,转换成HTML代码返回,也就是下面get函数中response。  那么,下面的$.get函数,虽然请求的是微信文章的地址,但实际请求到的是这篇文章的HTML,微信文章的图片地址都是data-src,所以正则替换成src  下面,需要将这些代码在做一下处理,赋值给iframe的src中,让图片可以在跨域的情况下也能正常显示,就是在我们得到的HTML前面添加 ‘data:type/html;charset=utf-8,‘ 这句话添加到URL前面,浏览器就会将后面的东西当作html代码解析,so~  实际给iframe的src赋的值是 ‘data:type/html;charset=utf-8,‘ + response,这样浏览器在解析这些代码的时候就避开了跨域问题(具体可能由cors-anywhere),此时,在浏览器中就可以正常显示了。BUT~  项目需要在微信中使用,当我们在微信中打开这个iframe的时候,很荣幸的死掉了...这个死掉的原因是因为微信中,iframe的src不支持data的写法,可能是微信做了处理吧,那就换个思路吧,苦思冥想~  既然已经把HTML代码都请求过来了,那我们在微信中就不用iframe,直接把内容和样式append进去,(在这之前,我把js都去掉了,因为存在跨域问题,浏览器老报错。),  替换以后(就是上面注释的部分)可以用(当然是在上到我们测试环境,然后在微信中打开),大部分图片都可以正常显示,然后向我们领导询问,这个可能还是由一些跨域的问题,正好有一张图片,每篇文章都有,但有的可以显示,有的就不能,经过仔细对比,  发现图片请求是https的时候,图片显示不出来,http的时候,图片就能显示(但把地址复制到浏览器地址栏,http开头的请求就会变成https了,这块不是很懂,希望有看到的朋友,如果懂的话,留言讲解一下,感谢~),  用这种方法在浏览器中查看,就会显示微信那个默认图片,显示不正常,所以就判断在浏览器的时候,就用iframe,在微信中就用appendDOM节点的方式,到此,在微信中、浏览器中均能正常显示。又要BUT了~  我们需要在app中也要打开,使用iframe的方式,挂掉了,使用append的方式,可以显示,但图片又变成了微信默认图...  有遇到相似问题的同学,欢迎留言评论~
时间: 2024-11-08 20:28:32

iframe显示微信公众号文章的相关文章

pc端引入微信公众号文章

最近做了一个小需求,结果坑特别多..... 需求是这样的,要给公司内部做一个微信公众号广告投票系统,整个项目就不多赘述了,有个小功能,要求是这样的: 点击某条记录后的“投票”按钮,在当前页面弹出弹窗显示文章内容(读取文章url,需要正确展示文字.图片.排版等),保持3分钟,这期间在当前页面上不可进行任何操作,不可投票也不可关闭文章.3分钟后,文章下方的投票区域可用,点击“提交”按钮时,校验所有项目是否都已选择,如果没有,则弹窗提示.提交完成后,状态更改为“已投票”(只是针对该用户,不针对该公众号

【技巧】如何使用客户端发布BLOG+如何快速发布微信公众号文章

[技巧]如何使用客户端发布BLOG+如何快速发布微信公众号文章   1  BLOG文档结构图     2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 如何使用客户端发布BLOG(重点) ② 如何快速发布微信公众号文章 ③ 如何批量上传图片到blog ④ 如何批量上传图片到微信公众号上     Tips: ① 本文在itpub(http://blog.itpub.net/26736162)

使用fiddler抓取微信公众号文章的阅读数、点赞数、评论数

1 设置fiddler支持https 打开fiddler,在菜单栏中依次选择 [Tools]->[Options]->[HTTPS],勾上如下图的选项: 单击Actions,选择Export Root Certificate to Desktop(导出证书到桌面)选项: 安装证书: 在桌面上找到FiddlerRoot.cer文件,双击进行安装直到导入成功. 2 配置fiddler抓取规则 在菜单栏中依次选择 [Rules]->[Customize Rules] 弹出Fiddler Scr

Python爬虫实现的微信公众号文章下载器

平时爱逛知乎,收藏了不少别人推荐的数据分析.机器学习相关的微信公众号(这里就不列举了,以免硬广嫌疑).但是在手机微信上一页页的翻阅历史文章浏览,很不方便,电脑端微信也不方便. 所以我就想有什么方法能否将这些公众号文章下载下来.这样的话,看起来也方便.但是网上的方法要么太复杂(对于我这个爬虫入门新手来说),要么付费. 但我的需求其实却很简单--"方便的查找 / 检索 / 浏览相关公众号的任意文章",所以,一番学习检索后,上手做了一个小工具(打包成可执行文件了),虽然方法和代码相当简单,但

微信公众号文章也可以添加音乐 不用因无法添加背景音乐代码而烦恼了

之前我们有聊过用代码添加图文消息背景音乐,微信可能考虑安全问题一段时间后代码不能用了,现在好了,微信公众号文章也可以添加音乐了,直接在微信公众平台后台像添加图片一样直接就可以插入音乐,未经认证的公众号也可以使用这一功能. 微信公众号文章添加音乐具体的操作流程是: 运营者可以在编辑图文消息时,在正文中插入音乐;选取音乐时,支持根据歌名.作者进行搜索,并且可以试听音乐;完成后即可. 也许文字不能表达的,音乐,可以表达. 一首歌,也许是你的信仰,你的态度,你的心情,你的记忆…… 为了让这种表达和分享更

微信公众号文章终于聚合成信息流了

还是自己动手丰衣足食,爬了搜狗的信息,总算可以聚合微信公众号的文章内容了. 这下子一个号搞定500个最热门公众号文章,方便查阅. 接下来要去做的是信息优化. 预览版:订阅号热榜,wx_hot ======== 之前一直有声音称,微信公众号目前的模式,很不适合大量关注的用户查看每日更新的文章.所以造成了大量的公众号订阅号被折叠以后,鲜有人问津.一旦打开订阅号,会发现众多“…”标记的公众号,这些都是未读条数超过99条的账号. 面对折叠以后,造成阅读量下降,难道微信就任其发展不顾么? 事情显然是否定的

小麦苗微信公众号文章链接地址

小麦苗的微信公众号文章链接地址: 发布日期 文章标题 2016-08-14 [等待事件]User I/O类 等待事件(2.1)--db file sequential read(数据文件顺序读) 2016-08-13 [等待事件]等待事件概述(1)--等待事件的源起和分类 2016-08-12 [故障处理]ORA-12545: Connect failed because target host 2016-08-11 [故障解决]ORA-06502: PL/SQL: numeric or val

豆约翰博客备份专家新增微信公众号文章批量下载功能

目前微信火得一塌糊涂,豆约翰博客备份专家也来凑凑热闹. 自媒体的兴起,使得一些各个领域的专家在微信中开通了公众号,我们大家可以选择自己感兴趣的进行订阅. 微信公众号会定期的向订阅者推送一些高质量的文章(当然也包括一些广告). 下面我们就来看一下如何利用豆约翰博客备份专家来批量下载微信公众号文章. 要批量下载微信公众号文章,首先我们必须要知道公众号ID. 首先打开搜狗微信搜索:http://weixin.sogou.com/ 在搜索框中录入微信公众号名称,比如豆约翰关注的一个公众号[哥伦布没来过]

长按微信公众号文章内容可分享朋友圈且附带二维码

就在刚刚,有朋友无意间发现长按住微信公众号文章内容的某一句话,将会出现“分享”的选项,一旦分享之后,微信将会自动将选中的内容,形成一段话分享在朋友圈,而且会在分享的文末,附上该篇文章的二维码.ytkah觉得这个非常文艺范,一小句话自动生成图片,很唯美,在朋友圈容易疯转,附带的二维码也利于公众号的宣传,整个有点像前段时间那个很火的宽图小应用 长按住微信公众号文章内容的某一句话,将会出现“分享”的选项 长按微信公众号文章可以分享朋友圈且附带二维码 目前,经过测试,仅有苹果手机可以使用这一功能.有了这