HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

底部选项卡被输入法撑起问题解决

输入法 选项卡

1.如果是单页面出现的问题,可以使用
mui.plusReady(function() {
//设置bottom绝对位置
document.getElementById('bottomx').style.top = (plus.display.resolutionHeight - 50) + "px";
});
这段代码 转自:解决弹出输入法时页面高度变小导致底部上浮的问题

2.如果选项卡在父页面中,并且在页面中的样式中设置了bottom属性,可以使用
mui.plusReady(function(){
var self=plus.webview.currentWebview();
/**

  • 防止 在write页面输入文字的时候 , 输入法把选项卡撑起来
    */
    var parentVebView =self.opener();
    //防止 父页面选项卡被输入法撑起
    window.addEventListener('resize', function() {
    var a=plus.android.invoke(plus.android.currentWebview(),"getHeight") ;
    var b=plus.navigator.getStatusbarHeight();
    var c=plus.screen.resolutionHeight ;
    var d=(c-a-b);
    console.info('webview高度:'+a+" 状态栏高度:"+b+" 屏幕高度:"+c+" 输入法高度:"+d)
    d >0 ? self.setStyle({top: '45px',bottom: '0px'}) : self.setStyle({top: '45px',bottom: '50px'});
    //d > 0 ? parentVebView.evalJS("mui('#nav_id').css('position','absolute');") : parentVebView.evalJS("mui('#nav_id').css('position','fixed');");
    }, false);
    });
    当输入法打开时 重新设置当前webview的 style属性
继续阅读 »

1.如果是单页面出现的问题,可以使用
mui.plusReady(function() {
//设置bottom绝对位置
document.getElementById('bottomx').style.top = (plus.display.resolutionHeight - 50) + "px";
});
这段代码 转自:解决弹出输入法时页面高度变小导致底部上浮的问题

2.如果选项卡在父页面中,并且在页面中的样式中设置了bottom属性,可以使用
mui.plusReady(function(){
var self=plus.webview.currentWebview();
/**

  • 防止 在write页面输入文字的时候 , 输入法把选项卡撑起来
    */
    var parentVebView =self.opener();
    //防止 父页面选项卡被输入法撑起
    window.addEventListener('resize', function() {
    var a=plus.android.invoke(plus.android.currentWebview(),"getHeight") ;
    var b=plus.navigator.getStatusbarHeight();
    var c=plus.screen.resolutionHeight ;
    var d=(c-a-b);
    console.info('webview高度:'+a+" 状态栏高度:"+b+" 屏幕高度:"+c+" 输入法高度:"+d)
    d >0 ? self.setStyle({top: '45px',bottom: '0px'}) : self.setStyle({top: '45px',bottom: '50px'});
    //d > 0 ? parentVebView.evalJS("mui('#nav_id').css('position','absolute');") : parentVebView.evalJS("mui('#nav_id').css('position','fixed');");
    }, false);
    });
    当输入法打开时 重新设置当前webview的 style属性
收起阅读 »

mui主动触发上拉下拉加载

mui.init({
pullRefresh : {
container:refreshContainer,//待刷新区域标识,querySelector能定位的css选择器均可,比如:id、.class等
up : {
contentrefresh : "正在加载...",//可选,正在加载状态时,上拉加载控件上显示的标题内容
contentnomore:'没有更多数据了',//可选,请求完毕若没有更多数据时显示的提醒内容;
callback :pullfresh-function ,
auto:true//页面加载完就加载一次
}
}
});

主动下拉加载
mui('#pullrefresh').pullRefresh().pulldownLoading();
主动上拉加载
mui('#pullrefresh').pullRefresh().pullupLoading();

继续阅读 »

mui.init({
pullRefresh : {
container:refreshContainer,//待刷新区域标识,querySelector能定位的css选择器均可,比如:id、.class等
up : {
contentrefresh : "正在加载...",//可选,正在加载状态时,上拉加载控件上显示的标题内容
contentnomore:'没有更多数据了',//可选,请求完毕若没有更多数据时显示的提醒内容;
callback :pullfresh-function ,
auto:true//页面加载完就加载一次
}
}
});

主动下拉加载
mui('#pullrefresh').pullRefresh().pulldownLoading();
主动上拉加载
mui('#pullrefresh').pullRefresh().pullupLoading();

收起阅读 »

怎么从零开始学习Dcloud的技术,开发手机APP?

5+App开发 mui HBuilder 视频教程 学习

推荐国内首推的跨平台移动APP开发专业培训机构-东翌学院是Dcloud的合作培训机构,跨平台APP开发整体课程在线直播+课程源码+全套视频,最新最全的APP开发,HB和MUI的全套视频,零基础都可以学习,更有高级进修课程,30天最快速的开发跨平台APP!咨询报名QQ:410355878 网址:http://www.dongyixueyuan.com/ 欢迎有意向学习的朋友加好友咨询!谢谢Dcloud提供这么好的平台!

立即学习

继续阅读 »

推荐国内首推的跨平台移动APP开发专业培训机构-东翌学院是Dcloud的合作培训机构,跨平台APP开发整体课程在线直播+课程源码+全套视频,最新最全的APP开发,HB和MUI的全套视频,零基础都可以学习,更有高级进修课程,30天最快速的开发跨平台APP!咨询报名QQ:410355878 网址:http://www.dongyixueyuan.com/ 欢迎有意向学习的朋友加好友咨询!谢谢Dcloud提供这么好的平台!

立即学习

收起阅读 »

HTML5新增标签总结、简单说明

从使用的特点上来看,HTML5相对以前版本来看给人的感觉就是更加人性化。按照以往的页面布局习惯是<div id="article"> 代表内容模块,<div id="aside">代表边栏模块,通过这种方式来区分每个div的区块部分。HTML5就不一样了,一改以往布局习惯换成<article>、<aside> 这些更加语义化的标签。所以说H5增加了这些标签最大的作用就是语义化,便于读取和识辨。因此也更加适合做SEO,容易快速准确的被爬虫读取,就像head和 titile 这样的标签元素一样。同时一些移动设备在解析到这些标签的时候做出特殊提示或者更加人性化的展示 等等。
HTML5新增了哪些标签(来源网络)

标签 标记意义及用法分析/示例 属性/属性值/描述
<article> 定义独立的内容,如论坛帖子、报纸文章、博客条目、用户评论等内容。 支持HTML5的全局属性和事件属性。
<aside> 定义两栏或多栏页面的侧边栏内容,如联系我们、客服、网站公告等内容。 支持HTML5的全局属性和事件属性。
<audio> 定义音频内容,如音乐或其他音频流。
autoplay autoplay 自动播放。
controls controls 显示控件。
loop loop 自动重播。
preload preload 预备播放。如果使用 “autoplay”,则忽略该属性。
src url 音频的URL。
支持HTML5的全局属性和事件属性。
<audio src=”audio.wav”>
您的浏览器不支持 audio 标签。(注:可以在开始标签和结束标签之间加上此文本内容,这样若浏览器不支持此元素,就可以显示出这个信息。)
</audio>

<canvas> 定义图形,如图表和其他图像。(注:<canvas> 只是图形容器,我们必须使用脚本来绘制图形。)
height pixels 设置 canvas 的高度。
width pixels 设置 canvas 的宽度。
支持HTML5的全局属性和事件属性。
<canvas id=”myCanvas”></canvas>
<script type=”text/javascript”>
var canvas=document.getElementById(‘myCanvas’);
var ctx=canvas.getContext(‘2d’);
ctx.fillStyle=’#FFFF00′;
ctx.fillRect(0,0,20,30);
</script>

<command> 标记定义一个命令按钮,比如单选按钮、复选框或按钮。只有当 command 元素位于 menu 元素内时,该元素才是可见的。否则不会显示这个元素,但是可以用它规定键盘快捷键。
checked checked 定义是否被选中。仅用于 radio 或 checkbox 类型
disabled disabled 定义 command 是否可用
icon url 定义作为 command 来显示的图像的url
label text 为 command 定义可见的 label
radiogroup groupname 定义 command 所属的组名。仅在类型为 radio 时使用
type checkbox
command
radio
定义该 command 的类型。默认是 “command”
支持HTML5的全局属性和事件属性。
<menu>
<command onclick=”alert(‘Hello!’)”>Click here.</command>
</menu>

<datalist> 定义选项列表,需与 input 元素配合使用,通过input 元素的 list 属性来绑定,用来定义 input 可能的值。datalist 及其选项不会被显示出来,它仅仅是合法的输入值列表。 支持HTML5的全局属性和事件属性。
<input id=”fruits” list=”fruits” />
<datalist id=”fruits”>
<option value=”Apple”>
<option value=”Banana”>
</datalist>

<details> 用于描述文档或文档某个部分的细节。
open open 定义 details 是否可见
支持HTML5的全局属性和事件属性。
<details>
<summary>Some title.</summary>
<p>Some details about the title.</p>
</details>

<embed> 定义外部的可交互的内容或插件。
height pixels 设置嵌入内容的高度
src url 嵌入内容的 URL
type type 定义嵌入内容的类型
width pixels 设置嵌入内容的宽度
支持HTML5的全局属性和事件属性。
<embed src=”someone.swf” />

<figure> 定义一组媒体内容(图像、图表、照片、代码等)以及它们的标题。如果被删除,则不应对文档流产生影响。 支持HTML5的全局属性和事件属性。
<figure>
<p>The title of the image.</p>
<img src=”someimage.jpg” width=”100″ height=”50″ />
</figure>

<footer> 定义一个页面或一个区域的页脚。可包含文档的作者姓名、创作日期或者联系信息。 支持HTML5的全局属性和事件属性。
<header> 定义一个页面或一个区域的头部。 支持HTML5的全局属性和事件属性。
<hgroup> 定义文件中一个区块的相关信息,使用 <hgroup> 标签对网页或区段(section)的标题进行组合。 支持HTML5的全局属性和事件属性。
<hgroup>
<h1>Welcome my world!</h1>
<h2>This is a title.</h2>
</hgroup>

<keygen> 定义表单里一个生成的键值。规定用于表单的密钥对生成器字段。当提交表单时,私钥存储在本地,公钥发送到服务器。
autofocus autofocus 使 keygen 字段在页面加载时获得焦点
challenge challenge 如果使用,则将 keygen 的值设置为在提交时询问
disabled disabled 禁用 keytag 字段
form formname 定义该 keygen 字段所属的一个或多个表单
keytype rsa 定义 keytype。rsa 生成 RSA 密钥
name fieldname 定义 keygen 元素的唯一名称,用于在提交表单时搜集字段的值。
支持HTML5的全局属性和事件属性。
<form action=”demo_keygen.asp” method=”get”>
Username: <input type=”text” name=”usr_name” />
Encryption: <keygen name=”security” />
<input type=”submit” />
</form>

<mark> 定义有标记的文本。请在需要突出显示文本时使用此标签。 支持HTML5的全局属性和事件属性。
<p>I like <mark>apple</mark> most.</p>

<meter> 定义度量衡。仅用于已知最大和最小值的度量。(注:必须定义度量的范围,既可以在元素的文本中,也可以在 min/max 属性中定义。)
high number 定义度量的值位于哪个点,被界定为高的值
low number 定义度量的值位于哪个点,被界定为低的值
max number 定义最大值。默认值是 1
min number 定义最小值。默认值是 0
optimum number 定义什么样的度量值是最佳的值。如果该值高于 “high” 属性,则意味着值越高越好。如果该值低于 “low” 属性的值,则意味着值越低越好。
value number 定义度量的值
支持HTML5的全局属性和事件属性。
<meter min=”0″ max=”10″>2</meter>
<meter>2 out of 5</meter>
<meter>10%</meter>

<nav> 定义导航链接。(注:如果文档中有“前后”按钮,则应该把它放到 <nav> 元素中。) 支持HTML5的全局属性和事件属性。
<nav>
<a href=”index.asp”>Home</a>
<a href=”Previous.asp”>Previous</a>
<a href=”Next.asp”>Next</a>
</nav>

<output> 定义不同类型的输出,比如脚本的输出。
for id of another element 定义输出域相关的一个或多个元素
form formname 定义输入字段所属的一个或多个表单
name unique name 定义对象的唯一名称。(表单提交时使用)
支持HTML5的全局属性和事件属性。
<progress> 定义任务(如下载)的过程,可以使用此标签来显示 JavaScript 中耗费时间的函数的进度。
max number 定义完成的值
value number 定义进程的当前值
支持HTML5的全局属性和事件属性。
<progress>
<span id=”progress”>15</span>%
</progress>

<ruby> 定义 ruby 注释(中文注音或字符)。在东亚使用,显示的是东亚字符的发音。ruby 元素由一个或多个字符(需要一个解释/发音)和一个提供该信息的 rt 元素组成,还包括可选的 rp 元素,定义当浏览器不支持 “ruby” 元素时显示的内容。 支持HTML5的全局属性和事件属性。
<section> 定义文档中的节(section、区段)。比如章节、页眉、页脚或文档中的其他部分。
cite URL 当 section 摘自 web 的时候使用
支持HTML5的全局属性和事件属性。
<source> 为媒介元素(比如 <video> 和 <audio>)定义媒介资源。
media media query 定义媒介资源的类型,供浏览器决定是否下载
src url 媒介的 URL
type numeric value 定义播放器在音频流中播放起始位置。默认是从开头播放。
支持HTML5的全局属性和事件属性。
<time> 定义一个日期/时间,该元素能够以机器可读的方式对日期和时间进行编码,举例说,用户代理能够把生日提醒或排定的事件添加到用户日程表中,搜索引擎也能够生成更智能的搜索结果。
datetime datetime 规定日期或时间。否则,由元素的内容给定日期或时间
pubdate pubdate 指示 <time> 元素中的日期或时间是文档的发布日期
支持HTML5的全局属性和事件属性。
<p>大家都是早上 <time>9:00</time> 上班。</p>
<p><time datetime=”2012-01-01″>元旦</time>晚会。</p>

<video> 定义视频,比如电影片段或其他视频流。
autoplay autoplay 自动播放。
controls controls 显示控件。
height pixels 设置视频播放器的高度
loop loop 自动重播。
preload preload 预备播放。如果使用 “autoplay”,则忽略该属性。
src url 视频的URL。
width pixels 设置视频播放器的宽度
支持HTML5的全局属性和事件属性。
<video src=”movie.ogg” controls=”controls”>
您的浏览器不支持 video 标签。(注:可以在开始标签和结束标签之间加上此文本内容,这样若浏览器不支持此元素,就可以显示出这个信息。)
</video>

继续阅读 »

从使用的特点上来看,HTML5相对以前版本来看给人的感觉就是更加人性化。按照以往的页面布局习惯是<div id="article"> 代表内容模块,<div id="aside">代表边栏模块,通过这种方式来区分每个div的区块部分。HTML5就不一样了,一改以往布局习惯换成<article>、<aside> 这些更加语义化的标签。所以说H5增加了这些标签最大的作用就是语义化,便于读取和识辨。因此也更加适合做SEO,容易快速准确的被爬虫读取,就像head和 titile 这样的标签元素一样。同时一些移动设备在解析到这些标签的时候做出特殊提示或者更加人性化的展示 等等。
HTML5新增了哪些标签(来源网络)

标签 标记意义及用法分析/示例 属性/属性值/描述
<article> 定义独立的内容,如论坛帖子、报纸文章、博客条目、用户评论等内容。 支持HTML5的全局属性和事件属性。
<aside> 定义两栏或多栏页面的侧边栏内容,如联系我们、客服、网站公告等内容。 支持HTML5的全局属性和事件属性。
<audio> 定义音频内容,如音乐或其他音频流。
autoplay autoplay 自动播放。
controls controls 显示控件。
loop loop 自动重播。
preload preload 预备播放。如果使用 “autoplay”,则忽略该属性。
src url 音频的URL。
支持HTML5的全局属性和事件属性。
<audio src=”audio.wav”>
您的浏览器不支持 audio 标签。(注:可以在开始标签和结束标签之间加上此文本内容,这样若浏览器不支持此元素,就可以显示出这个信息。)
</audio>

<canvas> 定义图形,如图表和其他图像。(注:<canvas> 只是图形容器,我们必须使用脚本来绘制图形。)
height pixels 设置 canvas 的高度。
width pixels 设置 canvas 的宽度。
支持HTML5的全局属性和事件属性。
<canvas id=”myCanvas”></canvas>
<script type=”text/javascript”>
var canvas=document.getElementById(‘myCanvas’);
var ctx=canvas.getContext(‘2d’);
ctx.fillStyle=’#FFFF00′;
ctx.fillRect(0,0,20,30);
</script>

<command> 标记定义一个命令按钮,比如单选按钮、复选框或按钮。只有当 command 元素位于 menu 元素内时,该元素才是可见的。否则不会显示这个元素,但是可以用它规定键盘快捷键。
checked checked 定义是否被选中。仅用于 radio 或 checkbox 类型
disabled disabled 定义 command 是否可用
icon url 定义作为 command 来显示的图像的url
label text 为 command 定义可见的 label
radiogroup groupname 定义 command 所属的组名。仅在类型为 radio 时使用
type checkbox
command
radio
定义该 command 的类型。默认是 “command”
支持HTML5的全局属性和事件属性。
<menu>
<command onclick=”alert(‘Hello!’)”>Click here.</command>
</menu>

<datalist> 定义选项列表,需与 input 元素配合使用,通过input 元素的 list 属性来绑定,用来定义 input 可能的值。datalist 及其选项不会被显示出来,它仅仅是合法的输入值列表。 支持HTML5的全局属性和事件属性。
<input id=”fruits” list=”fruits” />
<datalist id=”fruits”>
<option value=”Apple”>
<option value=”Banana”>
</datalist>

<details> 用于描述文档或文档某个部分的细节。
open open 定义 details 是否可见
支持HTML5的全局属性和事件属性。
<details>
<summary>Some title.</summary>
<p>Some details about the title.</p>
</details>

<embed> 定义外部的可交互的内容或插件。
height pixels 设置嵌入内容的高度
src url 嵌入内容的 URL
type type 定义嵌入内容的类型
width pixels 设置嵌入内容的宽度
支持HTML5的全局属性和事件属性。
<embed src=”someone.swf” />

<figure> 定义一组媒体内容(图像、图表、照片、代码等)以及它们的标题。如果被删除,则不应对文档流产生影响。 支持HTML5的全局属性和事件属性。
<figure>
<p>The title of the image.</p>
<img src=”someimage.jpg” width=”100″ height=”50″ />
</figure>

<footer> 定义一个页面或一个区域的页脚。可包含文档的作者姓名、创作日期或者联系信息。 支持HTML5的全局属性和事件属性。
<header> 定义一个页面或一个区域的头部。 支持HTML5的全局属性和事件属性。
<hgroup> 定义文件中一个区块的相关信息,使用 <hgroup> 标签对网页或区段(section)的标题进行组合。 支持HTML5的全局属性和事件属性。
<hgroup>
<h1>Welcome my world!</h1>
<h2>This is a title.</h2>
</hgroup>

<keygen> 定义表单里一个生成的键值。规定用于表单的密钥对生成器字段。当提交表单时,私钥存储在本地,公钥发送到服务器。
autofocus autofocus 使 keygen 字段在页面加载时获得焦点
challenge challenge 如果使用,则将 keygen 的值设置为在提交时询问
disabled disabled 禁用 keytag 字段
form formname 定义该 keygen 字段所属的一个或多个表单
keytype rsa 定义 keytype。rsa 生成 RSA 密钥
name fieldname 定义 keygen 元素的唯一名称,用于在提交表单时搜集字段的值。
支持HTML5的全局属性和事件属性。
<form action=”demo_keygen.asp” method=”get”>
Username: <input type=”text” name=”usr_name” />
Encryption: <keygen name=”security” />
<input type=”submit” />
</form>

<mark> 定义有标记的文本。请在需要突出显示文本时使用此标签。 支持HTML5的全局属性和事件属性。
<p>I like <mark>apple</mark> most.</p>

<meter> 定义度量衡。仅用于已知最大和最小值的度量。(注:必须定义度量的范围,既可以在元素的文本中,也可以在 min/max 属性中定义。)
high number 定义度量的值位于哪个点,被界定为高的值
low number 定义度量的值位于哪个点,被界定为低的值
max number 定义最大值。默认值是 1
min number 定义最小值。默认值是 0
optimum number 定义什么样的度量值是最佳的值。如果该值高于 “high” 属性,则意味着值越高越好。如果该值低于 “low” 属性的值,则意味着值越低越好。
value number 定义度量的值
支持HTML5的全局属性和事件属性。
<meter min=”0″ max=”10″>2</meter>
<meter>2 out of 5</meter>
<meter>10%</meter>

<nav> 定义导航链接。(注:如果文档中有“前后”按钮,则应该把它放到 <nav> 元素中。) 支持HTML5的全局属性和事件属性。
<nav>
<a href=”index.asp”>Home</a>
<a href=”Previous.asp”>Previous</a>
<a href=”Next.asp”>Next</a>
</nav>

<output> 定义不同类型的输出,比如脚本的输出。
for id of another element 定义输出域相关的一个或多个元素
form formname 定义输入字段所属的一个或多个表单
name unique name 定义对象的唯一名称。(表单提交时使用)
支持HTML5的全局属性和事件属性。
<progress> 定义任务(如下载)的过程,可以使用此标签来显示 JavaScript 中耗费时间的函数的进度。
max number 定义完成的值
value number 定义进程的当前值
支持HTML5的全局属性和事件属性。
<progress>
<span id=”progress”>15</span>%
</progress>

<ruby> 定义 ruby 注释(中文注音或字符)。在东亚使用,显示的是东亚字符的发音。ruby 元素由一个或多个字符(需要一个解释/发音)和一个提供该信息的 rt 元素组成,还包括可选的 rp 元素,定义当浏览器不支持 “ruby” 元素时显示的内容。 支持HTML5的全局属性和事件属性。
<section> 定义文档中的节(section、区段)。比如章节、页眉、页脚或文档中的其他部分。
cite URL 当 section 摘自 web 的时候使用
支持HTML5的全局属性和事件属性。
<source> 为媒介元素(比如 <video> 和 <audio>)定义媒介资源。
media media query 定义媒介资源的类型,供浏览器决定是否下载
src url 媒介的 URL
type numeric value 定义播放器在音频流中播放起始位置。默认是从开头播放。
支持HTML5的全局属性和事件属性。
<time> 定义一个日期/时间,该元素能够以机器可读的方式对日期和时间进行编码,举例说,用户代理能够把生日提醒或排定的事件添加到用户日程表中,搜索引擎也能够生成更智能的搜索结果。
datetime datetime 规定日期或时间。否则,由元素的内容给定日期或时间
pubdate pubdate 指示 <time> 元素中的日期或时间是文档的发布日期
支持HTML5的全局属性和事件属性。
<p>大家都是早上 <time>9:00</time> 上班。</p>
<p><time datetime=”2012-01-01″>元旦</time>晚会。</p>

<video> 定义视频,比如电影片段或其他视频流。
autoplay autoplay 自动播放。
controls controls 显示控件。
height pixels 设置视频播放器的高度
loop loop 自动重播。
preload preload 预备播放。如果使用 “autoplay”,则忽略该属性。
src url 视频的URL。
width pixels 设置视频播放器的宽度
支持HTML5的全局属性和事件属性。
<video src=”movie.ogg” controls=”controls”>
您的浏览器不支持 video 标签。(注:可以在开始标签和结束标签之间加上此文本内容,这样若浏览器不支持此元素,就可以显示出这个信息。)
</video>

收起阅读 »

安卓上用推送通知后续操作打开url+url scheme实现透传消息效果,相比直接使用透传的优点是:传递的数据量大,到达率高

推送

安卓上用推送通知后续操作打开url url scheme实现透传消息效果,相比直接使用透传的优点是:传递的数据量大,到达率高

安卓上用推送通知后续操作打开url url scheme实现透传消息效果,相比直接使用透传的优点是:传递的数据量大,到达率高

给各位新人分享一个APP开发经验附带源码[上啦加载下拉刷新后通过ajax获取网络数据,页面传值,列表点击]

5 App开发

这是我昨天用hbuider开发的一款练手的APP,数据是调用百度API市场提供的一个微信精选API 主要涉及的操作有页面之间的传值,
上啦加载下拉刷新后执行ajax获取新的数据 ,列表点击事件

PS:其实我也是一个小白,在开发 过程中请教过很多高手指点,怀疑人生很久后才独立开发出这款APP的 界面偷了论坛某位大神写的,

内置浏览器也是偷的论坛某位大神发的 嘻嘻 看图

继续阅读 »

这是我昨天用hbuider开发的一款练手的APP,数据是调用百度API市场提供的一个微信精选API 主要涉及的操作有页面之间的传值,
上啦加载下拉刷新后执行ajax获取新的数据 ,列表点击事件

PS:其实我也是一个小白,在开发 过程中请教过很多高手指点,怀疑人生很久后才独立开发出这款APP的 界面偷了论坛某位大神写的,

内置浏览器也是偷的论坛某位大神发的 嘻嘻 看图

收起阅读 »

录音文件与Base64编码相互转换的方法

技术分享

前言

最近有几个朋友一直在问语音文件怎么转base64字符串进行发送上传,base64字符串又如何转成文件,论坛中已经有多篇问题的帖子有介绍,这里只是稍微整理,方便大家可以更加方便的使用,首先看效果:

录音文件转成base64字符串

hello mui 演示app中im-chat.html有演示案例,通过hold和release控制录音的长度,即长按按钮开始录音,释放就停止录音,上拉取消发送录音。

html部分

<button id="recorder" type="button" class="mui-btn mui-btn-blue mui-btn-block">录制语音文件转base64字符串</button>

js部分

mui.init中首先需要配置手势事件

mui.init({  
    gestureConfig: {  
        tap: true, //默认为true  
        doubletap: true, //默认为false  
        longtap: true, //默认为false  
        swipe: true, //默认为true  
        drag: true, //默认为true  
        hold: true, //默认为false,不监听  
        release: true //默认为false,不监听  
    }  
});

录音逻辑控制,按住按钮弹出录音提示框,并且对录音时长进行控制,录音时间太短取消操作,手指上划,取消发送。

var MIN_SOUND_TIME = 800;  
var recorder = null;  
var startTimestamp = null;  
var stopTimestamp = null;  
var stopTimer = null;  
var recordCancel = false;  

var soundAlert = document.getElementById("sound-alert");  
var audioTips = document.getElementById("audio-tips");  

// 控制录音弹出框是否播放  
var setSoundAlertVisable=function(show){  
    if(show){  
        soundAlert.style.display = 'block';  
        soundAlert.style.opacity = 1;  
    }else{  
        soundAlert.style.opacity = 0;  
        //  完成再真正隐藏  
        setTimeout(function(){  
            soundAlert.style.display = 'none';  
        },200);  
    }  
};  

mui.plusReady(function () {  
    /**  
     * 录制语音文件转base64字符串  
     */  
    // 按住录音(长按开始录音)  
    document.querySelector('#recorder').addEventListener('hold',function () {  
        recordCancel = false;  
    if(stopTimer)clearTimeout(stopTimer);  

    audioTips.innerHTML = "手指上划,取消发送";  
    soundAlert.classList.remove('rprogress-sigh');  
    setSoundAlertVisable(true);  

    // 获取当前设备的录音对象  
        recorder = plus.audio.getRecorder();  
        startTimestamp = (new Date()).getTime();  
        recorder.record({  
            filename:"_doc/audio/",  
            format:"amr" //iOS平台支持"wav"、"aac"、"amr"格式,默认为"wav"  
        }, function (path) {  
            if (recordCancel) return;  
            console.log("path:"+path);  
            Audio2dataURL(path);  
        }, function ( e ) {  
            mui.toast("录音出现异常: " + e.message );  
        });  
    })  

    // 释放保存(松手保存)  
    document.querySelector('#recorder').addEventListener('release',function () {  
        if (audioTips.classList.contains("cancel")) {  
            audioTips.classList.remove("cancel");  
            audioTips.innerHTML = "手指上划,取消发送";  
        }  
        // 判断录音时间  
        stopTimestamp = (new Date()).getTime();  
        if (stopTimestamp - startTimestamp < 800) {  
            audioTips.innerHTML = "录音时间太短";  
            soundAlert.classList.add('rprogress-sigh');  
            recordCancel = true;  
            stopTimer=setTimeout(function(){  
                setSoundAlertVisable(false);  
            },800);  
        }else{  
            setSoundAlertVisable(false);  
        }  
        recorder.stop();  
    })  

    // 拖动屏幕(手指上划,取消发送)  
    document.body.addEventListener('drag', function(event) {  
        if (Math.abs(event.detail.deltaY) > 50) {  
            if (!recordCancel) {  
                recordCancel = true;  
                if (!audioTips.classList.contains("cancel")) {  
                    audioTips.classList.add("cancel");  
                }  
                audioTips.innerHTML = "松开手指,取消发送";  
            }  
        } else {  
            if (recordCancel) {  
                recordCancel = false;  
                if (audioTips.classList.contains("cancel")) {  
                    audioTips.classList.remove("cancel");  
                }  
                audioTips.innerHTML = "手指上划,取消发送";  
            }  
        }  
      }, false);  
})

当录音成功后,我们可以将录音文件转成base64字符串,用于网络传输。

/**  
 * 录音语音文件转base64字符串  
 * @param {Object} path  
 */  
function Audio2dataURL (path) {  
    plus.io.resolveLocalFileSystemURL(path, function(entry){  
        entry.file(function(file){  
            var reader = new plus.io.FileReader();  
            reader.onloadend = function (e) {  
                console.log(e.target.result);  
            };  
            reader.readAsDataURL(file);  
        },function(e){  
            mui.toast("读写出现异常: " + e.message );  
        })  
    })  
}

至此我们完成了录音语音文件转base64字符串,反过来我们需要将base64字符串转成语音文件。

base64字符串转成语音文件

我们可以封装如下方法:

/**  
 * base64字符串转成语音文件(参考http://ask.dcloud.net.cn/question/16935)  
 * @param {Object} base64Str  
 * @param {Object} callback  
 */  
function dataURL2Audio (base64Str, callback) {  
    var base64Str = base64Str.replace('data:audio/amr;base64,','');  
    var audioName = (new Date()).valueOf() + '.amr';  

    plus.io.requestFileSystem(plus.io.PRIVATE_DOC,function(fs){  
        fs.root.getFile(audioName,{create:true},function(entry){  
            // 获得平台绝对路径  
            var fullPath = entry.fullPath;  
            if(mui.os.android){    
                // 读取音频  
                var Base64 = plus.android.importClass("android.util.Base64");  
                var FileOutputStream = plus.android.importClass("java.io.FileOutputStream");  
                try{  
                    var out = new FileOutputStream(fullPath);  
                    var bytes = Base64.decode(base64Str, Base64.DEFAULT);  
                    out.write(bytes);   
                    out.close();  
                    // 回调  
                    callback && callback(entry);  
                }catch(e){  
                    console.log(e.message);  
                }  
            }else if(mui.os.ios){  
                var NSData = plus.ios.importClass('NSData');  
                var nsData = new NSData();  
                nsData = nsData.initWithBase64EncodedStringoptions(base64Str,0);  
                if (nsData) {  
                    nsData.plusCallMethod({writeToFile: fullPath,atomically:true});  
                    plus.ios.deleteObject(nsData);  
                }  
                // 回调  
                callback && callback(entry);  
            }  
        })  
    })  
}

调用方法如下:

html部分:

<button id="player" type="button" class="mui-btn mui-btn-blue mui-btn-block">base64字符串转成语音文件播放</button>

js部分:

/**  
 * base64字符串转成语音文件播放  
 */  
document.querySelector('#player').addEventListener('tap',function () {  
        // 语音文件Base64编码(由于编码过长影响阅读体验,请查看工程验证)  
     var base64Str = ' '   

        // 转成.amr文件播放  
    dataURL2Audio(base64Str, function(entry){  
        var toURL = entry.toURL();  
        // 播放音频  
        playAudio(toURL);  
    })  
})  

/**  
 * 播放音频  
 * @param {Object} path  
 */  
function playAudio (path) {  
    var player = plus.audio.createPlayer(path);  
    player.play(function(){  
        mui.toast("播放成功");  
    }, function(e) {  
        mui.toast("播放失败");  
    });   
}

写在后面

本文以语音文件为例说明5+中语音文件与Base64编码的相互转换,对于图片与Base64编码的转换方法请参考nativeObj Bitmap: 原生图片对象,可以通过loadBase64Data方法加载Base64编码格式图片到Bitmap对象,通过toBase64Data方法获取图片的Base64编码数据。对于一般性文件,建议使用h5 File API,详细可以参考我这篇文章:
JavaScript进阶学习(三)—— 基于html5 File API的文件操作

本文详细代码请查看附件工程。

继续阅读 »

前言

最近有几个朋友一直在问语音文件怎么转base64字符串进行发送上传,base64字符串又如何转成文件,论坛中已经有多篇问题的帖子有介绍,这里只是稍微整理,方便大家可以更加方便的使用,首先看效果:

录音文件转成base64字符串

hello mui 演示app中im-chat.html有演示案例,通过hold和release控制录音的长度,即长按按钮开始录音,释放就停止录音,上拉取消发送录音。

html部分

<button id="recorder" type="button" class="mui-btn mui-btn-blue mui-btn-block">录制语音文件转base64字符串</button>

js部分

mui.init中首先需要配置手势事件

mui.init({  
    gestureConfig: {  
        tap: true, //默认为true  
        doubletap: true, //默认为false  
        longtap: true, //默认为false  
        swipe: true, //默认为true  
        drag: true, //默认为true  
        hold: true, //默认为false,不监听  
        release: true //默认为false,不监听  
    }  
});

录音逻辑控制,按住按钮弹出录音提示框,并且对录音时长进行控制,录音时间太短取消操作,手指上划,取消发送。

var MIN_SOUND_TIME = 800;  
var recorder = null;  
var startTimestamp = null;  
var stopTimestamp = null;  
var stopTimer = null;  
var recordCancel = false;  

var soundAlert = document.getElementById("sound-alert");  
var audioTips = document.getElementById("audio-tips");  

// 控制录音弹出框是否播放  
var setSoundAlertVisable=function(show){  
    if(show){  
        soundAlert.style.display = 'block';  
        soundAlert.style.opacity = 1;  
    }else{  
        soundAlert.style.opacity = 0;  
        //  完成再真正隐藏  
        setTimeout(function(){  
            soundAlert.style.display = 'none';  
        },200);  
    }  
};  

mui.plusReady(function () {  
    /**  
     * 录制语音文件转base64字符串  
     */  
    // 按住录音(长按开始录音)  
    document.querySelector('#recorder').addEventListener('hold',function () {  
        recordCancel = false;  
    if(stopTimer)clearTimeout(stopTimer);  

    audioTips.innerHTML = "手指上划,取消发送";  
    soundAlert.classList.remove('rprogress-sigh');  
    setSoundAlertVisable(true);  

    // 获取当前设备的录音对象  
        recorder = plus.audio.getRecorder();  
        startTimestamp = (new Date()).getTime();  
        recorder.record({  
            filename:"_doc/audio/",  
            format:"amr" //iOS平台支持"wav"、"aac"、"amr"格式,默认为"wav"  
        }, function (path) {  
            if (recordCancel) return;  
            console.log("path:"+path);  
            Audio2dataURL(path);  
        }, function ( e ) {  
            mui.toast("录音出现异常: " + e.message );  
        });  
    })  

    // 释放保存(松手保存)  
    document.querySelector('#recorder').addEventListener('release',function () {  
        if (audioTips.classList.contains("cancel")) {  
            audioTips.classList.remove("cancel");  
            audioTips.innerHTML = "手指上划,取消发送";  
        }  
        // 判断录音时间  
        stopTimestamp = (new Date()).getTime();  
        if (stopTimestamp - startTimestamp < 800) {  
            audioTips.innerHTML = "录音时间太短";  
            soundAlert.classList.add('rprogress-sigh');  
            recordCancel = true;  
            stopTimer=setTimeout(function(){  
                setSoundAlertVisable(false);  
            },800);  
        }else{  
            setSoundAlertVisable(false);  
        }  
        recorder.stop();  
    })  

    // 拖动屏幕(手指上划,取消发送)  
    document.body.addEventListener('drag', function(event) {  
        if (Math.abs(event.detail.deltaY) > 50) {  
            if (!recordCancel) {  
                recordCancel = true;  
                if (!audioTips.classList.contains("cancel")) {  
                    audioTips.classList.add("cancel");  
                }  
                audioTips.innerHTML = "松开手指,取消发送";  
            }  
        } else {  
            if (recordCancel) {  
                recordCancel = false;  
                if (audioTips.classList.contains("cancel")) {  
                    audioTips.classList.remove("cancel");  
                }  
                audioTips.innerHTML = "手指上划,取消发送";  
            }  
        }  
      }, false);  
})

当录音成功后,我们可以将录音文件转成base64字符串,用于网络传输。

/**  
 * 录音语音文件转base64字符串  
 * @param {Object} path  
 */  
function Audio2dataURL (path) {  
    plus.io.resolveLocalFileSystemURL(path, function(entry){  
        entry.file(function(file){  
            var reader = new plus.io.FileReader();  
            reader.onloadend = function (e) {  
                console.log(e.target.result);  
            };  
            reader.readAsDataURL(file);  
        },function(e){  
            mui.toast("读写出现异常: " + e.message );  
        })  
    })  
}

至此我们完成了录音语音文件转base64字符串,反过来我们需要将base64字符串转成语音文件。

base64字符串转成语音文件

我们可以封装如下方法:

/**  
 * base64字符串转成语音文件(参考http://ask.dcloud.net.cn/question/16935)  
 * @param {Object} base64Str  
 * @param {Object} callback  
 */  
function dataURL2Audio (base64Str, callback) {  
    var base64Str = base64Str.replace('data:audio/amr;base64,','');  
    var audioName = (new Date()).valueOf() + '.amr';  

    plus.io.requestFileSystem(plus.io.PRIVATE_DOC,function(fs){  
        fs.root.getFile(audioName,{create:true},function(entry){  
            // 获得平台绝对路径  
            var fullPath = entry.fullPath;  
            if(mui.os.android){    
                // 读取音频  
                var Base64 = plus.android.importClass("android.util.Base64");  
                var FileOutputStream = plus.android.importClass("java.io.FileOutputStream");  
                try{  
                    var out = new FileOutputStream(fullPath);  
                    var bytes = Base64.decode(base64Str, Base64.DEFAULT);  
                    out.write(bytes);   
                    out.close();  
                    // 回调  
                    callback && callback(entry);  
                }catch(e){  
                    console.log(e.message);  
                }  
            }else if(mui.os.ios){  
                var NSData = plus.ios.importClass('NSData');  
                var nsData = new NSData();  
                nsData = nsData.initWithBase64EncodedStringoptions(base64Str,0);  
                if (nsData) {  
                    nsData.plusCallMethod({writeToFile: fullPath,atomically:true});  
                    plus.ios.deleteObject(nsData);  
                }  
                // 回调  
                callback && callback(entry);  
            }  
        })  
    })  
}

调用方法如下:

html部分:

<button id="player" type="button" class="mui-btn mui-btn-blue mui-btn-block">base64字符串转成语音文件播放</button>

js部分:

/**  
 * base64字符串转成语音文件播放  
 */  
document.querySelector('#player').addEventListener('tap',function () {  
        // 语音文件Base64编码(由于编码过长影响阅读体验,请查看工程验证)  
     var base64Str = ' '   

        // 转成.amr文件播放  
    dataURL2Audio(base64Str, function(entry){  
        var toURL = entry.toURL();  
        // 播放音频  
        playAudio(toURL);  
    })  
})  

/**  
 * 播放音频  
 * @param {Object} path  
 */  
function playAudio (path) {  
    var player = plus.audio.createPlayer(path);  
    player.play(function(){  
        mui.toast("播放成功");  
    }, function(e) {  
        mui.toast("播放失败");  
    });   
}

写在后面

本文以语音文件为例说明5+中语音文件与Base64编码的相互转换,对于图片与Base64编码的转换方法请参考nativeObj Bitmap: 原生图片对象,可以通过loadBase64Data方法加载Base64编码格式图片到Bitmap对象,通过toBase64Data方法获取图片的Base64编码数据。对于一般性文件,建议使用h5 File API,详细可以参考我这篇文章:
JavaScript进阶学习(三)—— 基于html5 File API的文件操作

本文详细代码请查看附件工程。

收起阅读 »

【第一课学习】mui.ajax跨域绑定列表实例 by Xueby

Asp.Net的MVC4版后台请求json代码
public JsonResult GetUserInfo()
{
List<Member> list = _memberService.GetTopMemberList(10, "1=1", "MemberId Desc");
var dataList = list.Select(p => new
{
p.UserName,
p.Email
});
//ajax请求必须加
HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "*");
HttpContext.Response.AppendHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
return Json(new { dataList, result = true }, JsonRequestBehavior.AllowGet);
}

前台html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title></title>
<script src="js/mui.min.js"></script>
<link href="css/mui.min.css" rel="stylesheet" />
<script type="text/javascript" charset="utf-8">
(function($) {
mui.ajax({
type: "GET",
url: "http://localhost:8080/mobile/Member/GetUserInfo", //跨域URL
dataType: "json",
success: function(data) {
//alert(JSON.stringify(data.dataList));
var list = document.getElementById("list");
var fragment = document.createDocumentFragment();
var li;
mui.each(data.dataList, function(index, item) {
var id = item.UserName,
name = item.UserName,
author = item.UserName,
picUrl = item.UserName
li = document.createElement('li');
li.className = 'mui-table-view-cell mui-media';
li.innerHTML = '<a class="mui-navigate-right" id=' + id + '>' +
'<img class="mui-media-object mui-pull-left" src="http://www.dcloud.io/hellomui/images/1.jpg"/>' +
'<div class="mui-media-body">' + name +
'<p class="mui-ellipsis">' + author + '</p>' +
'</div>' +
'</a>';
fragment.appendChild(li);
})
list.appendChild(fragment)
}
});
})(mui);
</script>
</head>
<body>
<div class="mui-content">
<ul id="list" class="mui-table-view mui-table-view-chevron">
<li class="mui-table-view-cell mui-media">
<a class="mui-navigate-right">
<img class="mui-media-object mui-pull-left" data-lazyload-id="0" src="http://www.dcloud.io/hellomui/images/1.jpg?version=447.4190210457891">
<div class="mui-media-body">
主标题
<p class="mui-ellipsis">列表二级标题</p>
</div>
</a>
</li>
</ul>
</div>
</body>
</html>

继续阅读 »

Asp.Net的MVC4版后台请求json代码
public JsonResult GetUserInfo()
{
List<Member> list = _memberService.GetTopMemberList(10, "1=1", "MemberId Desc");
var dataList = list.Select(p => new
{
p.UserName,
p.Email
});
//ajax请求必须加
HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "*");
HttpContext.Response.AppendHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
return Json(new { dataList, result = true }, JsonRequestBehavior.AllowGet);
}

前台html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title></title>
<script src="js/mui.min.js"></script>
<link href="css/mui.min.css" rel="stylesheet" />
<script type="text/javascript" charset="utf-8">
(function($) {
mui.ajax({
type: "GET",
url: "http://localhost:8080/mobile/Member/GetUserInfo", //跨域URL
dataType: "json",
success: function(data) {
//alert(JSON.stringify(data.dataList));
var list = document.getElementById("list");
var fragment = document.createDocumentFragment();
var li;
mui.each(data.dataList, function(index, item) {
var id = item.UserName,
name = item.UserName,
author = item.UserName,
picUrl = item.UserName
li = document.createElement('li');
li.className = 'mui-table-view-cell mui-media';
li.innerHTML = '<a class="mui-navigate-right" id=' + id + '>' +
'<img class="mui-media-object mui-pull-left" src="http://www.dcloud.io/hellomui/images/1.jpg"/>' +
'<div class="mui-media-body">' + name +
'<p class="mui-ellipsis">' + author + '</p>' +
'</div>' +
'</a>';
fragment.appendChild(li);
})
list.appendChild(fragment)
}
});
})(mui);
</script>
</head>
<body>
<div class="mui-content">
<ul id="list" class="mui-table-view mui-table-view-chevron">
<li class="mui-table-view-cell mui-media">
<a class="mui-navigate-right">
<img class="mui-media-object mui-pull-left" data-lazyload-id="0" src="http://www.dcloud.io/hellomui/images/1.jpg?version=447.4190210457891">
<div class="mui-media-body">
主标题
<p class="mui-ellipsis">列表二级标题</p>
</div>
</a>
</li>
</ul>
</div>
</body>
</html>

收起阅读 »

在github上发现的一个mui的拓展,可以直接用

mui

作者很懒,没有写说明,看了一下代码,可以拿来用,主要封装了常用的一些功能,比如登陆,发送ajax请求,正则判断等:

https://github.com/ionepub/mui.common.js

作者很懒,没有写说明,看了一下代码,可以拿来用,主要封装了常用的一些功能,比如登陆,发送ajax请求,正则判断等:

https://github.com/ionepub/mui.common.js

推送使用中的各种坑

推送

最近做的app中使用到了推送,就直接使用官方集成的个推,然后按照官方案例看了一遍又一遍,写了一遍又一遍,app打包了一遍又一遍,终于算是弄好了安卓版,ios版还没弄呢。现在把一些踩过的坑跟大家分享下,主要是在问答里实在是找不到答案啊!
我使用的是最新的mui(3.2)、hbuilder(7.3.2.201607212211)。
我先描述下,我要求的推送效果:app不管在线还是离线,系统通知栏中都显示消息,点击消息按照消息里的要求打开指定页面显示内容。接下来我一步一步分析下。
1、注册个推,填写appid等,这就不说了;确保安卓系统中app的push进程没有被安全软件杀死。
2、推送模板:个推的模板有好几个,为了能给安卓和ios都能推送,只能选择透传消息模板。
3、透传消息模板又分成标准数据和非标准数据,标准数据格式为:{title:'标题',content:'内容',payload:'数据'},非标准就是不按这个标准格式来的^_^。那到底选择哪个呢?这个是我踩得最惨的坑!!!按官方文档,标准格式会在通知栏里显示消息,点击消息后触发‘click’事件,可是经过我测试,点击消息后根本不触发‘click’事件!重要的事情说三遍:标准格式点击消息后不触发‘click’事件!标准格式点击消息后不触发‘click’事件!标准格式点击消息后不触发‘click’事件!不知道这个标准格式不触发‘click’事件是bug还是原本就这样??!!我后来尝试了非标准格式,在‘receive’里接受透传数据,然后创建本地消息(plus.push.createMessage),系统通知栏能正常显示消息,点击后顺利触发‘click’事件,但是当app不在线(就是被关闭了,push进程还在),receive事件就不执行了,自然就不能创建系统通知了。所以为了实现我最初要的推送效果,我只能选择标准透传数据模板。
4、如何获得透传数据?刚才我说过标准格式不触发‘click’事件,那怎么获得透传数据,并打开我们指定的页面呢?这里需要使用到app的启动参数plus.runtime.arguments。如果app是启动状态,不管前台还是后台,都可以用新意图事件来获得启动参数,如果app是未启动状态,可以在plusReady里获得启动参数。直接上代码

mui.plusReady(function() {  
    //仅支持竖屏显示  
    plus.screen.lockOrientation("portrait-primary");  

    document.addEventListener("newintent", function() {  
        openWebviewFromOthers();  
    });  

    plus.push.addEventListener("click", function(msg) {  
        console.log("push click");  
        pushGetRun(msg.payload);  
    }, false);  
    plus.push.addEventListener("receive", function(msg) {  
        //获取透传数据  
        var data = JSON.parse(msg.payload);  
        //创建本地消息  
        //plus.push.createMessage(data.content, data.payload, {  
        //    title: data.title,  
        //    cover: false  
        //});  
    }, false);  
        openWebviewFromOthers();  
});  
function pushGetRun(payload) {  
    payload = JSON.parse(payload);  
    var id = payload.id;  
    var autoShow = payload.autoshow;  
    var event = payload.event;  
    var params = JSON.stringify(payload.params);  
    ......//用参数打开指定页面  
}  
//获取通知栏(app未启动)点击、第三方程序启动本app  
function openWebviewFromOthers() {  
    var args = plus.runtime.arguments;  
        if(args) {  
            pushGetRun(args);  
        }  
}

此代码仅是我个人最近尝试的结果,仅针对安卓版本,如果有误请指正。

继续阅读 »

最近做的app中使用到了推送,就直接使用官方集成的个推,然后按照官方案例看了一遍又一遍,写了一遍又一遍,app打包了一遍又一遍,终于算是弄好了安卓版,ios版还没弄呢。现在把一些踩过的坑跟大家分享下,主要是在问答里实在是找不到答案啊!
我使用的是最新的mui(3.2)、hbuilder(7.3.2.201607212211)。
我先描述下,我要求的推送效果:app不管在线还是离线,系统通知栏中都显示消息,点击消息按照消息里的要求打开指定页面显示内容。接下来我一步一步分析下。
1、注册个推,填写appid等,这就不说了;确保安卓系统中app的push进程没有被安全软件杀死。
2、推送模板:个推的模板有好几个,为了能给安卓和ios都能推送,只能选择透传消息模板。
3、透传消息模板又分成标准数据和非标准数据,标准数据格式为:{title:'标题',content:'内容',payload:'数据'},非标准就是不按这个标准格式来的^_^。那到底选择哪个呢?这个是我踩得最惨的坑!!!按官方文档,标准格式会在通知栏里显示消息,点击消息后触发‘click’事件,可是经过我测试,点击消息后根本不触发‘click’事件!重要的事情说三遍:标准格式点击消息后不触发‘click’事件!标准格式点击消息后不触发‘click’事件!标准格式点击消息后不触发‘click’事件!不知道这个标准格式不触发‘click’事件是bug还是原本就这样??!!我后来尝试了非标准格式,在‘receive’里接受透传数据,然后创建本地消息(plus.push.createMessage),系统通知栏能正常显示消息,点击后顺利触发‘click’事件,但是当app不在线(就是被关闭了,push进程还在),receive事件就不执行了,自然就不能创建系统通知了。所以为了实现我最初要的推送效果,我只能选择标准透传数据模板。
4、如何获得透传数据?刚才我说过标准格式不触发‘click’事件,那怎么获得透传数据,并打开我们指定的页面呢?这里需要使用到app的启动参数plus.runtime.arguments。如果app是启动状态,不管前台还是后台,都可以用新意图事件来获得启动参数,如果app是未启动状态,可以在plusReady里获得启动参数。直接上代码

mui.plusReady(function() {  
    //仅支持竖屏显示  
    plus.screen.lockOrientation("portrait-primary");  

    document.addEventListener("newintent", function() {  
        openWebviewFromOthers();  
    });  

    plus.push.addEventListener("click", function(msg) {  
        console.log("push click");  
        pushGetRun(msg.payload);  
    }, false);  
    plus.push.addEventListener("receive", function(msg) {  
        //获取透传数据  
        var data = JSON.parse(msg.payload);  
        //创建本地消息  
        //plus.push.createMessage(data.content, data.payload, {  
        //    title: data.title,  
        //    cover: false  
        //});  
    }, false);  
        openWebviewFromOthers();  
});  
function pushGetRun(payload) {  
    payload = JSON.parse(payload);  
    var id = payload.id;  
    var autoShow = payload.autoshow;  
    var event = payload.event;  
    var params = JSON.stringify(payload.params);  
    ......//用参数打开指定页面  
}  
//获取通知栏(app未启动)点击、第三方程序启动本app  
function openWebviewFromOthers() {  
    var args = plus.runtime.arguments;  
        if(args) {  
            pushGetRun(args);  
        }  
}

此代码仅是我个人最近尝试的结果,仅针对安卓版本,如果有误请指正。

收起阅读 »

微信公众号文章页面代码

代码块

<!DOCTYPE html>  
<!-- saved from url=(0229)http://mp.weixin.qq.com/s?__biz=MzI1NDQwMTgzOQ==&tempkey=zVLAk1I4T2jp1%2BbKhSOYJnCl%2F3VuPfj0URnQvjTt3skOkDJ%2BeTzFcvi4GPY3i%2BHFoV877ma9JIwiKTzAMriQIVH%2BPcc8xbDt4HSHgxA2cWU%2FmqqET2YbQmQ9CxBiF6MS3I1hGohOy4F7TSTlxNZBXA%3D%3D&#rd -->  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  

    <meta http-equiv="X-UA-Compatible" content="IE=edge">  
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">  
    <meta name="apple-mobile-web-app-capable" content="yes">  
    <meta name="apple-mobile-web-app-status-bar-style" content="black">  
    <meta name="format-detection" content="telephone=no">  

    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        window.__nonce_str = "MOONSAFE_NONCE_1469070959"  
        if (location.href.indexOf("safe=0") == -1 && window.__nonce_str) {  
            window.__moonsafe_csp_offset || (window.__moonsafe_csp_offset = 18);  
            document.write('<meta http-equiv="Content-Security-Policy" content="script-src https: \'unsafe-inline\' \'unsafe-eval\' *.qq.com *.weishi.com' + (window.__nonce_str ? ' \'' + window.__nonce_str + "\'" : "") + '">');  

        }  
    </script>  
    <meta http-equiv="Content-Security-Policy" content="script-src https: &#39;unsafe-inline&#39; &#39;unsafe-eval&#39; *.qq.com *.weishi.com &#39;nonce-MOONSAFE_NONCE_1469070959&#39;">  

    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        window.logs = {  
            pagetime: {}  
        };  
        window.logs.pagetime['html_begin'] = (+new Date());  
    </script>  

    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        var page_begintime = +new Date, biz = "MzI1NDQwMTgzOQ==", sn = "", mid = "100000019", idx = "1", is_rumor = "", norumor = "";  
        1 * is_rumor && !(1 * norumor) && (document.referrer && -1 != document.referrer.indexOf("mp.weixin.qq.com/mp/rumor") || (location.href = "http://mp.weixin.qq.com/mp/rumor?action=info&__biz=" + biz + "&mid=" + mid + "&idx=" + idx + "&sn=" + sn + "#wechat_redirect")),  
        document.domain = "qq.com";  
    </script>  
    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        var MutationObserver = window.WebKitMutationObserver || window.MutationObserver || window.MozMutationObserver, isDangerSrc = function (t) {  
            if (t) {  
                var e = t.match(/http(?:s)?:\/\/([^\/]+?)(\/|$)/);  
                if (e && !/qq\.com(\:8080)?$/.test(e[1]) && !/weishi\.com$/.test(e[1])) return !0;  
            }  
            return !1;  
        }, ishttp = 0 == location.href.indexOf("http://");  
        -1 == location.href.indexOf("safe=0") && ishttp && "function" == typeof MutationObserver && "mp.weixin.qq.com" == location.host && (window.__observer_data = {  
            count: 0,  
            exec_time: 0,  
            list: []  
        }, window.__observer = new MutationObserver(function (t) {  
            window.__observer_data.count++;  
            var e = new Date, r = [];  
            t.forEach(function (t) {  
                for (var e = t.addedNodes, o = 0; o < e.length; o++) {  
                    var n = e[o];  
                    if ("SCRIPT" === n.tagName) {  
                        var i = n.src;  
                        isDangerSrc(i) && (window.__observer_data.list.push(i), r.push(n)), !i && window.__nonce_str && n.getAttribute("nonce") != window.__nonce_str && (window.__observer_data.list.push("inlinescript_without_nonce"),  
                        r.push(n));  
                    }  
                }  
            });  
            for (var o = 0; o < r.length; o++) {  
                var n = r[o];  
                n.parentNode && n.parentNode.removeChild(n);  
            }  
            window.__observer_data.exec_time += new Date - e;  
        }), window.__observer.observe(document, {  
            subtree: !0,  
            childList: !0  
        })), function () {  
            if (-1 == location.href.indexOf("safe=0") && Math.random() < .01 && ishttp && HTMLScriptElement.prototype.__lookupSetter__ && "undefined" != typeof Object.defineProperty) {  
                window.__danger_src = {  
                    xmlhttprequest: [],  
                    script_src: [],  
                    script_setAttribute: []  
                };  
                var t = "$" + Math.random();  
                HTMLScriptElement.prototype.__old_method_script_src = HTMLScriptElement.prototype.__lookupSetter__("src"),  
                HTMLScriptElement.prototype.__defineSetter__("src", function (t) {  
                    t && isDangerSrc(t) && window.__danger_src.script_src.push(t), this.__old_method_script_src(t);  
                });  
                var e = "element_setAttribute" + t;  
                Object.defineProperty(Element.prototype, e, {  
                    value: Element.prototype.setAttribute,  
                    enumerable: !1  
                }), Element.prototype.setAttribute = function (t, r) {  
                    "SCRIPT" == this.tagName && "src" == t && isDangerSrc(r) && window.__danger_src.script_setAttribute.push(r),  
                    this[e](t, r);  
                };  
            }  
        }();  
    </script>  

    <link rel="dns-prefetch" href="http://res.wx.qq.com/">  
    <link rel="dns-prefetch" href="http://mmbiz.qpic.cn/">  
    <link rel="shortcut icon" type="image/x-icon" href="http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/favicon22c41b.ico">  
    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        String.prototype.html = function (encode) {  
            var replace = ["&#39;", "'", "&quot;", '"', "&nbsp;", " ", "&gt;", ">", "&lt;", "<", "&amp;", "&", "&yen;", "¥"];  
            if (encode) {  
                replace.reverse();  
            }  
            for (var i = 0, str = this; i < replace.length; i += 2) {  
                str = str.replace(new RegExp(replace[i], 'g'), replace[i + 1]);  
            }  
            return str;  
        };  

        window.isInWeixinApp = function () {  
            return /MicroMessenger/.test(navigator.userAgent);  
        };  

        window.getQueryFromURL = function (url) {  
            url = url || 'http://qq.com/s?a=b#rd';  
            var query = url.split('?')[1].split('#')[0].split('&'),  
                params = {};  
            for (var i = 0; i < query.length; i++) {  
                var arg = query[i].split('=');  
                params[arg[0]] = arg[1];  
            }  
            if (params['pass_ticket']) {  
                params['pass_ticket'] = encodeURIComponent(params['pass_ticket'].html(false).html(false).replace(/\s/g, "+"));  
            }  
            return params;  
        };  

        (function () {  
            var params = getQueryFromURL(location.href);  
            window.uin = params['uin'] || '';  
            window.key = params['key'] || '';  
            window.wxtoken = params['wxtoken'] || '';  
            window.pass_ticket = params['pass_ticket'] || '';  
        })();  

    </script>  

    <title>流长生活网,邵东人自己的网购平台!</title>  

    <style>  
        html {  
            -ms-text-size-adjust: 100%;  
            -webkit-text-size-adjust: 100%;  
            line-height: 1.6;  
        }  

        body {  
            -webkit-touch-callout: none;  
            font-family: -apple-system-font,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;  
            background-color: #f3f3f3;  
            line-height: inherit;  
        }  

            body.rich_media_empty_extra {  
                background-color: #fff;  
            }  

                body.rich_media_empty_extra .rich_media_area_primary:before {  
                    display: none;  
                }  

        h1, h2, h3, h4, h5, h6 {  
            font-weight: 400;  
            font-size: 16px;  
        }  

        * {  
            margin: 0;  
            padding: 0;  
        }  

        a {  
            color: #607fa6;  
            text-decoration: none;  
        }  

        .rich_media_inner {  
            font-size: 16px;  
            word-wrap: break-word;  
            -webkit-hyphens: auto;  
            -ms-hyphens: auto;  
            hyphens: auto;  
        }  

        .rich_media_area_primary {  
            position: relative;  
            padding: 20px 15px 15px;  
            background-color: #fff;  
        }  

            .rich_media_area_primary:before {  
                content: " ";  
                position: absolute;  
                left: 0;  
                top: 0;  
                width: 100%;  
                height: 1px;  
                border-top: 1px solid #e5e5e5;  
                -webkit-transform-origin: 0 0;  
                transform-origin: 0 0;  
                -webkit-transform: scaleY(0.5);  
                transform: scaleY(0.5);  
                top: auto;  
                bottom: -2px;  
            }  

            .rich_media_area_primary .original_img_wrp {  
                display: inline-block;  
                font-size: 0;  
            }  

                .rich_media_area_primary .original_img_wrp .tips_global {  
                    display: block;  
                    margin-top: .5em;  
                    font-size: 14px;  
                    text-align: right;  
                    width: auto;  
                    overflow: hidden;  
                    text-overflow: ellipsis;  
                    white-space: nowrap;  
                    word-wrap: normal;  
                }  

        .rich_media_area_extra {  
            padding: 0 15px 0;  
        }  

        .rich_media_title {  
            margin-bottom: 10px;  
            line-height: 1.4;  
            font-weight: 400;  
            font-size: 24px;  
        }  

        .rich_media_meta_list {  
            margin-bottom: 18px;  
            line-height: 20px;  
            font-size: 0;  
        }  

            .rich_media_meta_list em {  
                font-style: normal;  
            }  

        .rich_media_meta {  
            display: inline-block;  
            vertical-align: middle;  
            margin-right: 8px;  
            margin-bottom: 10px;  
            font-size: 16px;  
        }  

        .meta_original_tag {  
            display: inline-block;  
            vertical-align: middle;  
            padding: 1px .5em;  
            border: 1px solid #9e9e9e;  
            color: #8c8c8c;  
            border-top-left-radius: 20% 50%;  
            -moz-border-radius-topleft: 20% 50%;  
            -webkit-border-top-left-radius: 20% 50%;  
            border-top-right-radius: 20% 50%;  
            -moz-border-radius-topright: 20% 50%;  
            -webkit-border-top-right-radius: 20% 50%;  
            border-bottom-left-radius: 20% 50%;  
            -moz-border-radius-bottomleft: 20% 50%;  
            -webkit-border-bottom-left-radius: 20% 50%;  
            border-bottom-right-radius: 20% 50%;  
            -moz-border-radius-bottomright: 20% 50%;  
            -webkit-border-bottom-right-radius: 20% 50%;  
            font-size: 15px;  
            line-height: 1.1;  
        }  

        .meta_enterprise_tag img {  
            width: 30px;  
            height: 30px!important;  
            display: block;  
            position: relative;  
            margin-top: -3px;  
            border: 0;  
        }  

        .rich_media_meta_text {  
            color: #8c8c8c;  
        }  

        span.rich_media_meta_nickname {  
            display: none;  
        }  

        .rich_media_thumb_wrp {  
            margin-bottom: 6px;  
        }  

            .rich_media_thumb_wrp .original_img_wrp {  
                display: block;  
            }  

        .rich_media_thumb {  
            display: block;  
            width: 100%;  
        }  

        .rich_media_content {  
            overflow: hidden;  
            color: #3e3e3e;  
        }  

            .rich_media_content * {  
                max-width: 100%!important;  
                box-sizing: border-box!important;  
                -webkit-box-sizing: border-box!important;  
                word-wrap: break-word!important;  
            }  

            /*.rich_media_content p {  
                clear: both;  
                min-height: 1em;  
                white-space: pre-wrap;  
            }*/  

            .rich_media_content em {  
                font-style: italic;  
            }  

            .rich_media_content fieldset {  
                min-width: 0;  
            }  

            .rich_media_content .list-paddingleft-2 {  
                padding-left: 30px;  
            }  

            .rich_media_content blockquote {  
                margin: 0;  
                padding-left: 10px;  
                border-left: 3px solid #dbdbdb;  
            }  

        img {  
            height: auto!important;  
        }  

        @media(min-device-width:375px) and (max-device-width:667px) and (-webkit-min-device-pixel-ratio:2) {  
            .mm_appmsg .rich_media_inner,.mm_appmsg .rich_media_meta,.mm_appmsg .discuss_list,.mm_appmsg .rich_media_extra,.mm_appmsg .title_tips .tips;  

        {  
            font-size: 17px;  
        }  

        .mm_appmsg .meta_original_tag {  
            font-size: 15px;  
        }  

        }  

        @media(min-device-width:414px) and (max-device-width:736px) and (-webkit-min-device-pixel-ratio:3) {  
            .mm_appmsg .rich_media_title;  

        {  
            font-size: 25px;  
        }  

        }  

        @media screen and (min-width:1024px) {  
            .rich_media {  
                width: 740px;  
                margin-left: auto;  
                margin-right: auto;  
            }  

            .rich_media_inner {  
                padding: 20px;  
            }  

            body {  
                background-color: #fff;  
            }  
        }  

        @media screen and (min-width:1025px) {  
            body {  
                font-family: "Helvetica Neue",Helvetica,"Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif;  
            }  

            .rich_media {  
                position: relative;  
            }  

            .rich_media_inner {  
                background-color: #fff;  
                padding-bottom: 100px;  
            }  
        }  

        .radius_avatar {  
            display: inline-block;  
            background-color: #fff;  
            padding: 3px;  
            border-radius: 50%;  
            -moz-border-radius: 50%;  
            -webkit-border-radius: 50%;  
            overflow: hidden;  
            vertical-align: middle;  
        }  

            .radius_avatar img {  
                display: block;  
                width: 100%;  
                height: 100%;  
                border-radius: 50%;  
                -moz-border-radius: 50%;  
                -webkit-border-radius: 50%;  
                background-color: #eee;  
            }  

        .cell {  
            padding: .8em 0;  
            display: block;  
            position: relative;  
        }  

        .cell_hd, .cell_bd, .cell_ft {  
            display: table-cell;  
            vertical-align: middle;  
            word-wrap: break-word;  
            word-break: break-all;  
            white-space: nowrap;  
        }  

        .cell_primary {  
            width: 2000px;  
            white-space: normal;  
        }  

        .flex_cell {  
            padding: 10px 0;  
            display: -webkit-box;  
            display: -webkit-flex;  
            display: -ms-flexbox;  
            display: flex;  
            -webkit-box-align: center;  
            -webkit-align-items: center;  
            -ms-flex-align: center;  
            align-items: center;  
        }  

        .flex_cell_primary {  
            width: 100%;  
            -webkit-box-flex: 1;  
            -webkit-flex: 1;  
            -ms-flex: 1;  
            box-flex: 1;  
            flex: 1;  
        }  

        .original_tool_area {  
            display: block;  
            padding: .75em 1em 0;  
            -webkit-tap-highlight-color: rgba(0,0,0,0);  
            color: #3e3e3e;  
            border: 1px solid #eaeaea;  
            margin: 20px 0;  
        }  

            .original_tool_area .tips_global {  
                position: relative;  
                padding-bottom: .5em;  
                font-size: 15px;  
            }  

                .original_tool_area .tips_global:after {  
                    content: " ";  
                    position: absolute;  
                    left: 0;  
                    bottom: 0;  
                    right: 0;  
                    height: 1px;  
                    border-bottom: 1px solid #dbdbdb;  
                    -webkit-transform-origin: 0 100%;  
                    transform-origin: 0 100%;  
                    -webkit-transform: scaleY(0.5);  
                    transform: scaleY(0.5);  
                }  

            .original_tool_area .radius_avatar {  
                width: 27px;  
                height: 27px;  
                padding: 0;  
                margin-right: .5em;  
            }  

                .original_tool_area .radius_avatar img {  
                    height: 100%!important;  
                }  

            .original_tool_area .flex_cell_bd {  
                width: auto;  
                overflow: hidden;  
                text-overflow: ellipsis;  
                white-space: nowrap;  
                word-wrap: normal;  
            }  

            .original_tool_area .flex_cell_ft {  
                font-size: 14px;  
                color: #8c8c8c;  
                padding-left: 1em;  
                white-space: nowrap;  
            }  

            .original_tool_area .icon_access:after {  
                content: " ";  
                display: inline-block;  
                height: 8px;  
                width: 8px;  
                border-width: 1px 1px 0 0;  
                border-color: #cbcad0;  
                border-style: solid;  
                transform: matrix(0.71,0.71,-0.71,0.71,0,0);  
                -ms-transform: matrix(0.71,0.71,-0.71,0.71,0,0);  
                -webkit-transform: matrix(0.71,0.71,-0.71,0.71,0,0);  
                position: relative;  
                top: -2px;  
                top: -1px;  
            }  

        .weui_loading {  
            width: 20px;  
            height: 20px;  
            display: inline-block;  
            vertical-align: middle;  
            -webkit-animation: weuiLoading 1s steps(12,end) infinite;  
            animation: weuiLoading 1s steps(12,end) infinite;  
            background: transparent url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iciIgd2lkdGg9JzEyMHB4JyBoZWlnaHQ9JzEyMHB4JyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJub25lIiBjbGFzcz0iYmsiPjwvcmVjdD4KICAgIDxyZWN0IHg9JzQ2LjUnIHk9JzQwJyB3aWR0aD0nNycgaGVpZ2h0PScyMCcgcng9JzUnIHJ5PSc1JyBmaWxsPScjRTlFOUU5JwogICAgICAgICAgdHJhbnNmb3JtPSdyb3RhdGUoMCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSc+CiAgICA8L3JlY3Q+CiAgICA8cmVjdCB4PSc0Ni41JyB5PSc0MCcgd2lkdGg9JzcnIGhlaWdodD0nMjAnIHJ4PSc1JyByeT0nNScgZmlsbD0nIzk4OTY5NycKICAgICAgICAgIHRyYW5zZm9ybT0ncm90YXRlKDMwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApJz4KICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0naW5kZWZpbml0ZScvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyM5Qjk5OUEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSg2MCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSc+CiAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9J2luZGVmaW5pdGUnLz4KICAgIDwvcmVjdD4KICAgIDxyZWN0IHg9JzQ2LjUnIHk9JzQwJyB3aWR0aD0nNycgaGVpZ2h0PScyMCcgcng9JzUnIHJ5PSc1JyBmaWxsPScjQTNBMUEyJwogICAgICAgICAgdHJhbnNmb3JtPSdyb3RhdGUoOTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNBQkE5QUEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxMjAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNCMkIyQjInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxNTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNCQUI4QjknCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxODAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNDMkMwQzEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyMTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNDQkNCQ0InCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyNDAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNEMkQyRDInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyNzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNEQURBREEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgzMDAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNFMkUyRTInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgzMzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0Pgo8L3N2Zz4=) no-repeat;  
            -webkit-background-size: 100%;  
            background-size: 100%;  
        }  

        @-webkit-keyframes weuiLoading {  
            0% {  
                -webkit-transform: rotate3d(0,0,1,0deg);  
            }  

            100% {  
                -webkit-transform: rotate3d(0,0,1,360deg);  
            }  
        }  

        @keyframes weuiLoading {  
            0% {  
                -webkit-transform: rotate3d(0,0,1,0deg);  
            }  

            100% {  
                -webkit-transform: rotate3d(0,0,1,360deg);  
            }  
        }  

        .gif_img_wrp {  
            display: inline-block;  
            font-size: 0;  
            position: relative;  
        }  

            .gif_img_wrp img {  
                min-height: 120px;  
                min-width: 120px;  
            }  

        .gif_img_tips {  
            background: rgba(0,0,0,0.6)!important;  
            filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#99000000',endcolorstr = '#99000000');  
            border-top-left-radius: 1.2em 50%;  
            -moz-border-radius-topleft: 1.2em 50%;  
            -webkit-border-top-left-radius: 1.2em 50%;  
            border-top-right-radius: 1.2em 50%;  
            -moz-border-radius-topright: 1.2em 50%;  
            -webkit-border-top-right-radius: 1.2em 50%;  
            border-bottom-left-radius: 1.2em 50%;  
            -moz-border-radius-bottomleft: 1.2em 50%;  
            -webkit-border-bottom-left-radius: 1.2em 50%;  
            border-bottom-right-radius: 1.2em 50%;  
            -moz-border-radius-bottomright: 1.2em 50%;  
            -webkit-border-bottom-right-radius: 1.2em 50%;  
            line-height: 2.3;  
            padding: 0 1em;  
            font-size: 11px;  
            color: #fff;  
            text-align: center;  
            position: absolute;  
            bottom: 10px;  
            left: 10px;  
        }  

            .gif_img_tips i {  
                vertical-align: middle;  
                margin: -0.2em .73em 0 -2px;  
            }  

        .gif_img_play_arrow {  
            display: inline-block;  
            width: 0;  
            height: 0;  
            border-width: 8px;  
            border-style: dashed;  
            border-color: transparent;  
            border-right-width: 0;  
            border-left-color: #fff;  
            border-left-style: solid;  
            border-width: 5px 0 5px 8px;  
        }  

        .gif_img_loading {  
            width: 14px;  
            height: 14px;  
        }  

        i.gif_img_loading {  
            margin-left: -4px;  
        }  

        .rich_media_global_msg {  
            position: fixed;  
            top: 0;  
            left: 0;  
            right: 0;  
            padding: .65em 35px .65em 15px;  
            z-index: 1;  
            background-color: #cde6ff;  
            color: #8c8c8c;  
            font-size: 13px;  
        }  

            .rich_media_global_msg .icon_closed {  
                position: absolute;  
                right: 15px;  
                top: 50%;  
                margin-top: -5px;  
                line-height: 300px;  
                overflow: hidden;  
                -webkit-tap-highlight-color: rgba(0,0,0,0);  
                background: transparent url(/mmbizwap/zh_CN/htmledition/images/icon/appmsg/icon_appmsg_msg_closed_sprite.2x.png) no-repeat 0 0;  
                width: 11px;  
                height: 11px;  
                vertical-align: middle;  
                display: inline-block;  
                -webkit-background-size: 100% auto;  
                background-size: 100% auto;  
            }  

                .rich_media_global_msg .icon_closed:active {  
                    background-position: 0 -17px;  
                }  

        .preview_appmsg .rich_media_title {  
            margin-top: 1.5em;  
        }  

        @media screen and (min-width:1024px) {  
            .rich_media_global_msg {  
                position: relative;  
                margin: 0 20px;  
            }  

            .preview_appmsg .rich_media_title {  
                margin-top: 0;  
            }  
        }  
    </style>  
    <style>  

    </style>  
    <!--[if lt IE 9]>  
<link rel="stylesheet" type="text/css" href="http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_pc2c9cd6.css">  
<![endif]-->  

    <script nonce="MOONSAFE_NONCE_1469070959" src="./流长生活网,邵东人自己的网购平台!_files/android2c5484.js" type="text/javascript" async=""></script>  
    <script nonce="MOONSAFE_NONCE_1469070959" src="./流长生活网,邵东人自己的网购平台!_files/qqmusic_tpl.html2f2e72.js" type="text/javascript" async=""></script>  
    <script nonce="MOONSAFE_NONCE_1469070959" src="./流长生活网,邵东人自己的网购平台!_files/attr275627.js" type="text/javascript" async=""></script>  
    <script nonce="MOONSAFE_NONCE_1469070959" src="./流长生活网,邵东人自己的网购平台!_files/event275627.js" type="text/javascript" async=""></script>  
    <script nonce="MOONSAFE_NONCE_1469070959" src="./流长生活网,邵东人自己的网购平台!_files/index2f3f48.js" type="text/javascript" async=""></script>  
    <link rel="stylesheet" type="text/css" href="./流长生活网,邵东人自己的网购平台!_files/page_mp_article_improve_combo2eb52b.css">  
    <link rel="stylesheet" type="text/css" href="./流长生活网,邵东人自己的网购平台!_files/not_in_mm2c9cd6.css">  
</head>  
<body id="activity-detail" class="zh_CN mm_appmsg not_in_mm" ontouchstart="">  

    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        var write_sceen_time = (+new Date());  
    </script>  

    <div id="js_article" class="rich_media">  

        <div id="js_top_ad_area" class="top_banner">  
        </div>  

        <div class="rich_media_inner">  

            <div id="page-content">  
                <div id="img-content" class="rich_media_area_primary">  
                    <h2 class="rich_media_title" id="activity-name">流长生活网,邵东人自己的网购平台!   
                    </h2>  
                    <div class="rich_media_meta_list">  
                        <em id="post-date" class="rich_media_meta rich_media_meta_text">2016-07-26</em>  

                        <em class="rich_media_meta rich_media_meta_text">流长生活</em>  
                        <a class="rich_media_meta rich_media_meta_link rich_media_meta_nickname" href="javascript:void(0);" id="post-user">流长生活</a>  
                        <span class="rich_media_meta rich_media_meta_text rich_media_meta_nickname">流长生活</span>  

                        <div id="js_profile_qrcode" class="profile_container" style="display: none;">  
                            <div class="profile_inner">  
                                <strong class="profile_nickname">流长生活</strong>  
                                <img class="profile_avatar" id="js_profile_qrcode_img" src="" alt="">  

                                <p class="profile_meta">  
                                    <label class="profile_meta_label">微信号</label>  
                                    <span class="profile_meta_value"></span>  
                                </p>  

                                <p class="profile_meta">  
                                    <label class="profile_meta_label">功能介绍</label>  
                                    <span class="profile_meta_value">一个本地的O2O购物平台,通过定位距离来智能推荐需要的商品。在这里你可以轻松找到你身边的特价产品。同时对你的商品进行比较,更方便找到你想要的商品。你也可以在这里入驻发布你的商品进行买卖,推荐好友加入进来,还能赚到相应的奖励。</span>  
                                </p>  

                            </div>  
                            <span class="profile_arrow_wrp" id="js_profile_arrow_wrp">  
                                <i class="profile_arrow arrow_out"></i>  
                                <i class="profile_arrow arrow_in"></i>  
                            </span>  
                        </div>  
                    </div>  

                    <div class="rich_media_content " id="js_content">  

                        <p style="color: rgb(54, 53, 51); widows: 1; outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; text-align: center; background-color: rgb(255, 255, 255);"><strong style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(229, 51, 51); font-size: 18px;"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; line-height: 26.6666679382324px;">  
                            <img src="images/liuchangLG-01.jpg" /></span></span><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(62, 62, 62); font-size: 18px;">进驻邵东啦!</span></strong></p>  
                        <p style="color: rgb(54, 53, 51); widows: 1; outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; text-align: center; background-color: rgb(255, 255, 255);"><strong style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(62, 62, 62); font-size: 18px;">邵东人有了自己的网购平台!</span></strong></p>  
                        <p style="color: rgb(54, 53, 51); widows: 1; outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; text-align: center; background-color: rgb(255, 255, 255);"><strong style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(62, 62, 62); font-size: 18px;">诚邀每位商家免费入住发布产品!诚邀有意从事电子商务平台事业者加盟!</span></strong></p>  
                        <p style="widows: 1; outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(62, 62, 62); text-align: center; background-color: rgb(255, 255, 255);"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; font-size: 18px;"><strong style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;">听到这消息,</span></strong></span></p>  
                        <p style="widows: 1; outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(62, 62, 62); text-align: center; background-color: rgb(255, 255, 255);"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; font-size: 18px;"><strong style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;">心里都有点小激动。。</span></strong></span></p>  
                        <p style="widows: 1; outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(62, 62, 62); text-align: center; background-color: rgb(255, 255, 255);">  
                            <img width="300" height="640" src="images/liuzhilan (2).png" />  
                        </p>  
                        <p style="text-align: center;"><span style="font-size: 24px; color: rgb(255, 251, 0); background-color: rgb(255, 0, 0);">下载APP,有更多特价产品等着你哦!</span></p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160811144737.png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160811145506.png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160811145442.png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160811144927.png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160811144754.png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160811112240.png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104422_.jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104422_(3).jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104422_(2).jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104422_(1).jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104416_.jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104416_(2).jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104416_(1).jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/739249a.png" />  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/ef4bd8a.png" />  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/c5e680a.png" />  
                        <p style="color: rgb(54, 53, 51); font-family: Helvetica, Arial, sans-serif; widows: 1; background-color: rgb(248, 247, 245); outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; text-align: center;">  
                            <img width="300" height="640" src="images/liuzhilan (2).png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <br>  
                        </p>  
                    </div>  
                    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
                        var first_sceen__time = (+new Date());  

                        if ("" == 1 && document.getElementById('js_content'))  
                            document.getElementById('js_content').addEventListener("selectstart", function (e) { e.preventDefault(); });  

                        (function () {  
                            if (navigator.userAgent.indexOf("WindowsWechat") != -1) {  
                                var link = document.createElement('link');  
                                var head = document.getElementsByTagName('head')[0];  
                                link.rel = 'stylesheet';  
                                link.type = 'text/css';  
                                link.href = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_winwx2c9cd6.css";  
                                head.appendChild(link);  
                            }  
                        })();  
                    </script>  

                    <div class="rich_media_tool" id="js_toobar3">  
                        <div id="js_read_area3" class="media_tool_meta tips_global meta_primary" style="display: none;">阅读 <span id="readNum3"></span></div>  

                        <span style="display: none;" class="media_tool_meta meta_primary tips_global meta_praise" id="like3">  
                            <i class="icon_praise_gray"></i><span class="praise_num" id="likeNum3"></span>  
                        </span>  

                        <a id="js_report_article3" style="display: none;" class="media_tool_meta tips_global meta_extra" href="javascript:void(0);">投诉</a>  

                    </div>  

                </div>  

                <div class="rich_media_area_primary sougou" id="sg_tj" style="display: none">  
                </div>  

                <div class="rich_media_area_extra">  

                    <div class="mpda_bottom_container" id="js_bottom_ad_area">  
                    </div>  

                    <div id="js_iframetest" style="display: none;"></div>  

                </div>  

            </div>  
        </div>  
    </div>  

    <script nonce="MOONSAFE_NONCE_1469070959">  
        var __DEBUGINFO = {  
            debug_js: "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/debug/console2ca724.js",  
            safe_js: "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/safe/moonsafe2f3e84.js",  
            res_list: []  
        };  
    </script>  

    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        var not_in_mm_css = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/not_in_mm2c9cd6.css";  
        var windowwx_css = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_winwx2c9cd6.css";  
        var article_improve_combo_css = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_combo2eb52b.css";  
        var tid = "";  
        var aid = "";  
        var clientversion = "";  
        var appuin = "MzI1NDQwMTgzOQ==" || "";  

        var source = "";  
        var scene = 75;  

        var itemidx = "";  

        var _copyright_stat = "0";  
        var _ori_article_type = "";  

        var nickname = "流长生活";  
        var appmsg_type = "6";  
        var ct = "1469526996";  
        var publish_time = "2016-07-26" || "";  
        var user_name = "gh_2869079ba1a4";  
        var user_name_new = "";  
        var fakeid = "";  
        var version = "";  
        var is_limit_user = "0";  
        var round_head_img = "http://mmbiz.qpic.cn/mmbiz/axRia8KjuZretDqQryLGZDKxDKHvdxUs2uuot3UtDfqrhsDYzJSOEX8U6RguECepldfpf7DPr734NWQLia6Nptcg/0?wx_fmt=png";  
        var msg_title = "流长生活网,邵东人自己的网购平台!";  
        var msg_desc = "流长生活平台进驻邵东啦!邵东人有了自己的网购平台!听到这消息,心里都有点小激动。。";  
        var msg_cdn_url = "http://mmbiz.qpic.cn/mmbiz/axRia8KjuZretDqQryLGZDKxDKHvdxUs26UbcaibzeicL8Ap1ibPXe3Lc6fsmVT4u2b95k2sQQMUlms6PicO5teLicYA/0?wx_fmt=png";  
        var msg_link = "http://mp.weixin.qq.com/s?__biz=MzI1NDQwMTgzOQ==&amp;tempkey=zVLAk1I4T2jp1%2BbKhSOYJnCl%2F3VuPfj0URnQvjTt3skOkDJ%2BeTzFcvi4GPY3i%2BHFoV877ma9JIwiKTzAMriQIVH%2BPcc8xbDt4HSHgxA2cWU%2FmqqET2YbQmQ9CxBiF6MSR8bt%2B%2B0GKNTNWVWq4NgBFw%3D%3D&amp;#rd";  
        var user_uin = "0" * 1;  
        var msg_source_url = '';  
        var img_format = 'png';  
        var srcid = '';  
        var req_id = '2717q1xDaRhM67K6ZZcmHxjE';  
        var networkType;  
        var appmsgid = '' || '100000019' || "100000019";  
        var comment_id = "0" * 1;  
        var comment_enabled = "" * 1;  
        var is_need_reward = "0" * 1;  
        var is_https_res = ("" * 1) && (location.protocol == "https:");  

        var devicetype = "";  
        var source_encode_biz = "";  
        // var source_username = "";  
        // var profile_ext_signature = "" || "";  
        var reprint_ticket = "";  
        var source_mid = "";  
        var source_idx = "";  

        var show_comment = "";  
        var __appmsgCgiData = {  
            can_use_page: "0" * 1,  
            is_wxg_stuff_uin: "0" * 1,  
            card_pos: "",  
            copyright_stat: "0",  
            source_biz: "",  
            hd_head_img: "http://wx.qlogo.cn/mmhead/Q3auHgzwzM7lWXWNHt8pqUQZBSFbpPYH4Kh9948IGicf9aoxX14OwDg/0" || (window.location.protocol + "//" + window.location.host + "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/appmsg/pic_rumor_link.2x264e76.jpg")  
        };  
        var _empty_v = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/pages/voice/empty26f1f1.mp3";  

        var copyright_stat = "0" * 1;  

        var pay_fee = "" * 1;  
        var pay_timestamp = "";  
        var need_pay = "" * 1;  

        var need_report_cost = "0" * 1;  
        var use_tx_video_player = "0" * 1;  

        var friend_read_source = "" || "";  
        var friend_read_version = "" || "";  
        var friend_read_class_id = "" || "";  

        var is_only_read = "1" * 1;  
        var read_num = "1" * 1;  
        var like_num = "0" * 1;  
        var liked = "false" == 'true' ? true : false;  
        var is_temp_url = "zVLAk1I4T2jp1&amp;nbsp;bKhSOYJnCl/3VuPfj0URnQvjTt3skOkDJ&amp;nbsp;eTzFcvi4GPY3i&amp;nbsp;HFoV877ma9JIwiKTzAMriQIVH&amp;nbsp;Pcc8xbDt4HSHgxA2cWU/mqqET2YbQmQ9CxBiF6MS3I1hGohOy4F7TSTlxNZBXA==" ? 1 : 0;  
        var send_time = "1469612391";  
        var icon_emotion_switch = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_switch.2x2f1273.png";  
        var icon_emotion_switch_active = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_switch_active.2x2f1273.png";  
        var icon_loading_white = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/icon_loading_white2805ea.gif";  
        var icon_audio_unread = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/audio/icon_audio_unread26f1f1.png";  
        var icon_qqmusic_default = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/qqmusic/icon_qqmusic_default.2x26f1f1.png";  
        var icon_qqmusic_source = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/qqmusic/icon_qqmusic_source263724.png";  

        var topic_default_img = 'http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/topic/pic_book_thumb.2x2e4987.png';  

        // 话题卡片相关数据  
        var wxtopic = {  
            isbn: ""    // 书籍  
        };  

        var svr_time = "1469612392" * 1;  

        window.wxtoken = "";  
        window.__moon_initcallback = function () {  
            if (!!window.__initCatch) {  
                window.__initCatch({  
                    idkey: 27613,  
                    startKey: 0,  
                    limit: 128,  
                    badjsId: 43,  
                    reportOpt: {  
                        uin: uin,  
                        biz: biz,  
                        mid: mid,  
                        idx: idx,  
                        sn: sn  
                    },  
                    extInfo: {  
                        network_rate: 0.01    //网络错误采样率  
                    }  
                });  
            }  
        }  
    </script>  

    <script nonce="MOONSAFE_NONCE_1469070959">window.__moon_mainjs = 'appmsg/index.js'; window.moon_map = { "appmsg/emotion/caret.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/caret278965.js", "biz_wap/jsapi/cardticket.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/jsapi/cardticket275627.js", "appmsg/emotion/map.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/map278965.js", "appmsg/emotion/textarea.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/textarea27cdc5.js", "appmsg/emotion/nav.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/nav278965.js", "appmsg/emotion/common.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/common278965.js", "appmsg/emotion/slide.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/slide2a9cd9.js", "pages/report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/report2eec22.js", "pages/music_player.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/music_player2b674b.js", "pages/loadscript.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/loadscript2c9cd6.js", "appmsg/emotion/dom.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/dom2f3ac3.js", "appmsg/my_comment_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/my_comment_tpl.html2f3f48.js", "biz_wap/utils/hashrouter.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/hashrouter2805ea.js", "a/gotoappdetail.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/gotoappdetail2f33fb.js", "a/ios.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/ios275627.js", "a/android.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/android2c5484.js", "a/profile.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/profile2f1750.js", "a/mpshop.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/mpshop2f1750.js", "a/card.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/card2f1750.js", "biz_wap/utils/position.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/position2f1750.js", "appmsg/a_report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/a_report2f1750.js", "biz_common/utils/respTypes.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/respTypes2c57d0.js", "appmsg/cmt_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/cmt_tpl.html2a2c13.js", "sougou/a_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/sougou/a_tpl.html2c6e7c.js", "appmsg/emotion/emotion.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/emotion2f3ac3.js", "biz_common/utils/report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/report275627.js", "biz_common/utils/huatuo.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/huatuo293afc.js", "biz_common/utils/cookie.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/cookie275627.js", "appmsg/topic_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/topic_tpl.html2f2e72.js", "pages/voice_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/voice_tpl.html2f2e72.js", "pages/voice_component.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/voice_component2f3ac3.js", "pages/qqmusic_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/qqmusic_tpl.html2f2e72.js", "new_video/ctl.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/new_video/ctl2d441f.js", "biz_common/utils/monitor.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/monitor2a30ee.js", "biz_common/utils/spin.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/spin275627.js", "biz_wap/jsapi/pay.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/jsapi/pay275627.js", "appmsg/reward_entry.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/reward_entry2f3ac3.js", "appmsg/comment.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/comment2f3ac3.js", "appmsg/like.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/like2eb52b.js", "appmsg/a.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/a2f1750.js", "pages/version4video.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/version4video2e481d.js", "rt/appmsg/getappmsgext.rt.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/rt/appmsg/getappmsgext.rt2c21f6.js", "biz_wap/utils/storage.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/storage2a74ac.js", "biz_common/tmpl.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/tmpl2b3578.js", "appmsg/img_copyright_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/img_copyright_tpl.html2a2c13.js", "appmsg/a_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/a_tpl.html2f1750.js", "biz_common/ui/imgonepx.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/ui/imgonepx275627.js", "biz_common/dom/attr.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/dom/attr275627.js", "biz_wap/utils/ajax.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/ajax2f1747.js", "biz_common/utils/string/html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/string/html29f4e9.js", "sougou/index.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/sougou/index2c7543.js", "biz_wap/safe/mutation_observer_report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/safe/mutation_observer_report2f3e84.js", "appmsg/report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/report2f3ac3.js", "appmsg/report_and_source.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/report_and_source2f1274.js", "appmsg/page_pos.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/page_pos2ec4b2.js", "appmsg/cdn_speed_report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/cdn_speed_report2c57d0.js", "appmsg/wxtopic.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/wxtopic2f2e72.js", "appmsg/voice.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/voice2f2e72.js", "appmsg/qqmusic.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/qqmusic2f2e72.js", "appmsg/iframe.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/iframe2ef6ca.js", "appmsg/review_image.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/review_image2d0cfe.js", "appmsg/outer_link.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/outer_link275627.js", "biz_wap/jsapi/core.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/jsapi/core2f0d45.js", "biz_common/dom/event.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/dom/event275627.js", "appmsg/copyright_report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/copyright_report2ec4b2.js", "appmsg/cache.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/cache2a74ac.js", "appmsg/pay_for_reading.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/pay_for_reading2c5484.js", "appmsg/async.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/async2f1750.js", "biz_wap/ui/lazyload_img.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/ui/lazyload_img2ec99a.js", "biz_common/log/jserr.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/log/jserr2805ea.js", "appmsg/share.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/share2ec548.js", "biz_wap/utils/mmversion.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/mmversion2f1d97.js", "appmsg/cdn_img_lib.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/cdn_img_lib275627.js", "biz_common/utils/url/parse.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/url/parse2dd7fd.js", "biz_common/dom/class.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/dom/class275627.js", "biz_wap/utils/device.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/device2b3aae.js", "biz_wap/jsapi/a8key.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/jsapi/a8key2a30ee.js", "appmsg/index.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/index2f3f48.js" };</script>  
    <script nonce="MOONSAFE_NONCE_1469070959" async="" type="text/javascript" src="./流长生活网,邵东人自己的网购平台!_files/moon2f0d45.js"></script>  
    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        var real_show_page_time = +new Date();  
        if (!!window.addEventListener) {  
            window.addEventListener("load", function () {  
                window.onload_endtime = +new Date();  
            });  
        }  

    </script>  

    <!--tailTrap<body></body><head></head><html></html>-->  

</body>  
</html>  
继续阅读 »

<!DOCTYPE html>  
<!-- saved from url=(0229)http://mp.weixin.qq.com/s?__biz=MzI1NDQwMTgzOQ==&tempkey=zVLAk1I4T2jp1%2BbKhSOYJnCl%2F3VuPfj0URnQvjTt3skOkDJ%2BeTzFcvi4GPY3i%2BHFoV877ma9JIwiKTzAMriQIVH%2BPcc8xbDt4HSHgxA2cWU%2FmqqET2YbQmQ9CxBiF6MS3I1hGohOy4F7TSTlxNZBXA%3D%3D&#rd -->  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  

    <meta http-equiv="X-UA-Compatible" content="IE=edge">  
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">  
    <meta name="apple-mobile-web-app-capable" content="yes">  
    <meta name="apple-mobile-web-app-status-bar-style" content="black">  
    <meta name="format-detection" content="telephone=no">  

    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        window.__nonce_str = "MOONSAFE_NONCE_1469070959"  
        if (location.href.indexOf("safe=0") == -1 && window.__nonce_str) {  
            window.__moonsafe_csp_offset || (window.__moonsafe_csp_offset = 18);  
            document.write('<meta http-equiv="Content-Security-Policy" content="script-src https: \'unsafe-inline\' \'unsafe-eval\' *.qq.com *.weishi.com' + (window.__nonce_str ? ' \'' + window.__nonce_str + "\'" : "") + '">');  

        }  
    </script>  
    <meta http-equiv="Content-Security-Policy" content="script-src https: &#39;unsafe-inline&#39; &#39;unsafe-eval&#39; *.qq.com *.weishi.com &#39;nonce-MOONSAFE_NONCE_1469070959&#39;">  

    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        window.logs = {  
            pagetime: {}  
        };  
        window.logs.pagetime['html_begin'] = (+new Date());  
    </script>  

    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        var page_begintime = +new Date, biz = "MzI1NDQwMTgzOQ==", sn = "", mid = "100000019", idx = "1", is_rumor = "", norumor = "";  
        1 * is_rumor && !(1 * norumor) && (document.referrer && -1 != document.referrer.indexOf("mp.weixin.qq.com/mp/rumor") || (location.href = "http://mp.weixin.qq.com/mp/rumor?action=info&__biz=" + biz + "&mid=" + mid + "&idx=" + idx + "&sn=" + sn + "#wechat_redirect")),  
        document.domain = "qq.com";  
    </script>  
    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        var MutationObserver = window.WebKitMutationObserver || window.MutationObserver || window.MozMutationObserver, isDangerSrc = function (t) {  
            if (t) {  
                var e = t.match(/http(?:s)?:\/\/([^\/]+?)(\/|$)/);  
                if (e && !/qq\.com(\:8080)?$/.test(e[1]) && !/weishi\.com$/.test(e[1])) return !0;  
            }  
            return !1;  
        }, ishttp = 0 == location.href.indexOf("http://");  
        -1 == location.href.indexOf("safe=0") && ishttp && "function" == typeof MutationObserver && "mp.weixin.qq.com" == location.host && (window.__observer_data = {  
            count: 0,  
            exec_time: 0,  
            list: []  
        }, window.__observer = new MutationObserver(function (t) {  
            window.__observer_data.count++;  
            var e = new Date, r = [];  
            t.forEach(function (t) {  
                for (var e = t.addedNodes, o = 0; o < e.length; o++) {  
                    var n = e[o];  
                    if ("SCRIPT" === n.tagName) {  
                        var i = n.src;  
                        isDangerSrc(i) && (window.__observer_data.list.push(i), r.push(n)), !i && window.__nonce_str && n.getAttribute("nonce") != window.__nonce_str && (window.__observer_data.list.push("inlinescript_without_nonce"),  
                        r.push(n));  
                    }  
                }  
            });  
            for (var o = 0; o < r.length; o++) {  
                var n = r[o];  
                n.parentNode && n.parentNode.removeChild(n);  
            }  
            window.__observer_data.exec_time += new Date - e;  
        }), window.__observer.observe(document, {  
            subtree: !0,  
            childList: !0  
        })), function () {  
            if (-1 == location.href.indexOf("safe=0") && Math.random() < .01 && ishttp && HTMLScriptElement.prototype.__lookupSetter__ && "undefined" != typeof Object.defineProperty) {  
                window.__danger_src = {  
                    xmlhttprequest: [],  
                    script_src: [],  
                    script_setAttribute: []  
                };  
                var t = "$" + Math.random();  
                HTMLScriptElement.prototype.__old_method_script_src = HTMLScriptElement.prototype.__lookupSetter__("src"),  
                HTMLScriptElement.prototype.__defineSetter__("src", function (t) {  
                    t && isDangerSrc(t) && window.__danger_src.script_src.push(t), this.__old_method_script_src(t);  
                });  
                var e = "element_setAttribute" + t;  
                Object.defineProperty(Element.prototype, e, {  
                    value: Element.prototype.setAttribute,  
                    enumerable: !1  
                }), Element.prototype.setAttribute = function (t, r) {  
                    "SCRIPT" == this.tagName && "src" == t && isDangerSrc(r) && window.__danger_src.script_setAttribute.push(r),  
                    this[e](t, r);  
                };  
            }  
        }();  
    </script>  

    <link rel="dns-prefetch" href="http://res.wx.qq.com/">  
    <link rel="dns-prefetch" href="http://mmbiz.qpic.cn/">  
    <link rel="shortcut icon" type="image/x-icon" href="http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/favicon22c41b.ico">  
    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        String.prototype.html = function (encode) {  
            var replace = ["&#39;", "'", "&quot;", '"', "&nbsp;", " ", "&gt;", ">", "&lt;", "<", "&amp;", "&", "&yen;", "¥"];  
            if (encode) {  
                replace.reverse();  
            }  
            for (var i = 0, str = this; i < replace.length; i += 2) {  
                str = str.replace(new RegExp(replace[i], 'g'), replace[i + 1]);  
            }  
            return str;  
        };  

        window.isInWeixinApp = function () {  
            return /MicroMessenger/.test(navigator.userAgent);  
        };  

        window.getQueryFromURL = function (url) {  
            url = url || 'http://qq.com/s?a=b#rd';  
            var query = url.split('?')[1].split('#')[0].split('&'),  
                params = {};  
            for (var i = 0; i < query.length; i++) {  
                var arg = query[i].split('=');  
                params[arg[0]] = arg[1];  
            }  
            if (params['pass_ticket']) {  
                params['pass_ticket'] = encodeURIComponent(params['pass_ticket'].html(false).html(false).replace(/\s/g, "+"));  
            }  
            return params;  
        };  

        (function () {  
            var params = getQueryFromURL(location.href);  
            window.uin = params['uin'] || '';  
            window.key = params['key'] || '';  
            window.wxtoken = params['wxtoken'] || '';  
            window.pass_ticket = params['pass_ticket'] || '';  
        })();  

    </script>  

    <title>流长生活网,邵东人自己的网购平台!</title>  

    <style>  
        html {  
            -ms-text-size-adjust: 100%;  
            -webkit-text-size-adjust: 100%;  
            line-height: 1.6;  
        }  

        body {  
            -webkit-touch-callout: none;  
            font-family: -apple-system-font,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;  
            background-color: #f3f3f3;  
            line-height: inherit;  
        }  

            body.rich_media_empty_extra {  
                background-color: #fff;  
            }  

                body.rich_media_empty_extra .rich_media_area_primary:before {  
                    display: none;  
                }  

        h1, h2, h3, h4, h5, h6 {  
            font-weight: 400;  
            font-size: 16px;  
        }  

        * {  
            margin: 0;  
            padding: 0;  
        }  

        a {  
            color: #607fa6;  
            text-decoration: none;  
        }  

        .rich_media_inner {  
            font-size: 16px;  
            word-wrap: break-word;  
            -webkit-hyphens: auto;  
            -ms-hyphens: auto;  
            hyphens: auto;  
        }  

        .rich_media_area_primary {  
            position: relative;  
            padding: 20px 15px 15px;  
            background-color: #fff;  
        }  

            .rich_media_area_primary:before {  
                content: " ";  
                position: absolute;  
                left: 0;  
                top: 0;  
                width: 100%;  
                height: 1px;  
                border-top: 1px solid #e5e5e5;  
                -webkit-transform-origin: 0 0;  
                transform-origin: 0 0;  
                -webkit-transform: scaleY(0.5);  
                transform: scaleY(0.5);  
                top: auto;  
                bottom: -2px;  
            }  

            .rich_media_area_primary .original_img_wrp {  
                display: inline-block;  
                font-size: 0;  
            }  

                .rich_media_area_primary .original_img_wrp .tips_global {  
                    display: block;  
                    margin-top: .5em;  
                    font-size: 14px;  
                    text-align: right;  
                    width: auto;  
                    overflow: hidden;  
                    text-overflow: ellipsis;  
                    white-space: nowrap;  
                    word-wrap: normal;  
                }  

        .rich_media_area_extra {  
            padding: 0 15px 0;  
        }  

        .rich_media_title {  
            margin-bottom: 10px;  
            line-height: 1.4;  
            font-weight: 400;  
            font-size: 24px;  
        }  

        .rich_media_meta_list {  
            margin-bottom: 18px;  
            line-height: 20px;  
            font-size: 0;  
        }  

            .rich_media_meta_list em {  
                font-style: normal;  
            }  

        .rich_media_meta {  
            display: inline-block;  
            vertical-align: middle;  
            margin-right: 8px;  
            margin-bottom: 10px;  
            font-size: 16px;  
        }  

        .meta_original_tag {  
            display: inline-block;  
            vertical-align: middle;  
            padding: 1px .5em;  
            border: 1px solid #9e9e9e;  
            color: #8c8c8c;  
            border-top-left-radius: 20% 50%;  
            -moz-border-radius-topleft: 20% 50%;  
            -webkit-border-top-left-radius: 20% 50%;  
            border-top-right-radius: 20% 50%;  
            -moz-border-radius-topright: 20% 50%;  
            -webkit-border-top-right-radius: 20% 50%;  
            border-bottom-left-radius: 20% 50%;  
            -moz-border-radius-bottomleft: 20% 50%;  
            -webkit-border-bottom-left-radius: 20% 50%;  
            border-bottom-right-radius: 20% 50%;  
            -moz-border-radius-bottomright: 20% 50%;  
            -webkit-border-bottom-right-radius: 20% 50%;  
            font-size: 15px;  
            line-height: 1.1;  
        }  

        .meta_enterprise_tag img {  
            width: 30px;  
            height: 30px!important;  
            display: block;  
            position: relative;  
            margin-top: -3px;  
            border: 0;  
        }  

        .rich_media_meta_text {  
            color: #8c8c8c;  
        }  

        span.rich_media_meta_nickname {  
            display: none;  
        }  

        .rich_media_thumb_wrp {  
            margin-bottom: 6px;  
        }  

            .rich_media_thumb_wrp .original_img_wrp {  
                display: block;  
            }  

        .rich_media_thumb {  
            display: block;  
            width: 100%;  
        }  

        .rich_media_content {  
            overflow: hidden;  
            color: #3e3e3e;  
        }  

            .rich_media_content * {  
                max-width: 100%!important;  
                box-sizing: border-box!important;  
                -webkit-box-sizing: border-box!important;  
                word-wrap: break-word!important;  
            }  

            /*.rich_media_content p {  
                clear: both;  
                min-height: 1em;  
                white-space: pre-wrap;  
            }*/  

            .rich_media_content em {  
                font-style: italic;  
            }  

            .rich_media_content fieldset {  
                min-width: 0;  
            }  

            .rich_media_content .list-paddingleft-2 {  
                padding-left: 30px;  
            }  

            .rich_media_content blockquote {  
                margin: 0;  
                padding-left: 10px;  
                border-left: 3px solid #dbdbdb;  
            }  

        img {  
            height: auto!important;  
        }  

        @media(min-device-width:375px) and (max-device-width:667px) and (-webkit-min-device-pixel-ratio:2) {  
            .mm_appmsg .rich_media_inner,.mm_appmsg .rich_media_meta,.mm_appmsg .discuss_list,.mm_appmsg .rich_media_extra,.mm_appmsg .title_tips .tips;  

        {  
            font-size: 17px;  
        }  

        .mm_appmsg .meta_original_tag {  
            font-size: 15px;  
        }  

        }  

        @media(min-device-width:414px) and (max-device-width:736px) and (-webkit-min-device-pixel-ratio:3) {  
            .mm_appmsg .rich_media_title;  

        {  
            font-size: 25px;  
        }  

        }  

        @media screen and (min-width:1024px) {  
            .rich_media {  
                width: 740px;  
                margin-left: auto;  
                margin-right: auto;  
            }  

            .rich_media_inner {  
                padding: 20px;  
            }  

            body {  
                background-color: #fff;  
            }  
        }  

        @media screen and (min-width:1025px) {  
            body {  
                font-family: "Helvetica Neue",Helvetica,"Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif;  
            }  

            .rich_media {  
                position: relative;  
            }  

            .rich_media_inner {  
                background-color: #fff;  
                padding-bottom: 100px;  
            }  
        }  

        .radius_avatar {  
            display: inline-block;  
            background-color: #fff;  
            padding: 3px;  
            border-radius: 50%;  
            -moz-border-radius: 50%;  
            -webkit-border-radius: 50%;  
            overflow: hidden;  
            vertical-align: middle;  
        }  

            .radius_avatar img {  
                display: block;  
                width: 100%;  
                height: 100%;  
                border-radius: 50%;  
                -moz-border-radius: 50%;  
                -webkit-border-radius: 50%;  
                background-color: #eee;  
            }  

        .cell {  
            padding: .8em 0;  
            display: block;  
            position: relative;  
        }  

        .cell_hd, .cell_bd, .cell_ft {  
            display: table-cell;  
            vertical-align: middle;  
            word-wrap: break-word;  
            word-break: break-all;  
            white-space: nowrap;  
        }  

        .cell_primary {  
            width: 2000px;  
            white-space: normal;  
        }  

        .flex_cell {  
            padding: 10px 0;  
            display: -webkit-box;  
            display: -webkit-flex;  
            display: -ms-flexbox;  
            display: flex;  
            -webkit-box-align: center;  
            -webkit-align-items: center;  
            -ms-flex-align: center;  
            align-items: center;  
        }  

        .flex_cell_primary {  
            width: 100%;  
            -webkit-box-flex: 1;  
            -webkit-flex: 1;  
            -ms-flex: 1;  
            box-flex: 1;  
            flex: 1;  
        }  

        .original_tool_area {  
            display: block;  
            padding: .75em 1em 0;  
            -webkit-tap-highlight-color: rgba(0,0,0,0);  
            color: #3e3e3e;  
            border: 1px solid #eaeaea;  
            margin: 20px 0;  
        }  

            .original_tool_area .tips_global {  
                position: relative;  
                padding-bottom: .5em;  
                font-size: 15px;  
            }  

                .original_tool_area .tips_global:after {  
                    content: " ";  
                    position: absolute;  
                    left: 0;  
                    bottom: 0;  
                    right: 0;  
                    height: 1px;  
                    border-bottom: 1px solid #dbdbdb;  
                    -webkit-transform-origin: 0 100%;  
                    transform-origin: 0 100%;  
                    -webkit-transform: scaleY(0.5);  
                    transform: scaleY(0.5);  
                }  

            .original_tool_area .radius_avatar {  
                width: 27px;  
                height: 27px;  
                padding: 0;  
                margin-right: .5em;  
            }  

                .original_tool_area .radius_avatar img {  
                    height: 100%!important;  
                }  

            .original_tool_area .flex_cell_bd {  
                width: auto;  
                overflow: hidden;  
                text-overflow: ellipsis;  
                white-space: nowrap;  
                word-wrap: normal;  
            }  

            .original_tool_area .flex_cell_ft {  
                font-size: 14px;  
                color: #8c8c8c;  
                padding-left: 1em;  
                white-space: nowrap;  
            }  

            .original_tool_area .icon_access:after {  
                content: " ";  
                display: inline-block;  
                height: 8px;  
                width: 8px;  
                border-width: 1px 1px 0 0;  
                border-color: #cbcad0;  
                border-style: solid;  
                transform: matrix(0.71,0.71,-0.71,0.71,0,0);  
                -ms-transform: matrix(0.71,0.71,-0.71,0.71,0,0);  
                -webkit-transform: matrix(0.71,0.71,-0.71,0.71,0,0);  
                position: relative;  
                top: -2px;  
                top: -1px;  
            }  

        .weui_loading {  
            width: 20px;  
            height: 20px;  
            display: inline-block;  
            vertical-align: middle;  
            -webkit-animation: weuiLoading 1s steps(12,end) infinite;  
            animation: weuiLoading 1s steps(12,end) infinite;  
            background: transparent url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iciIgd2lkdGg9JzEyMHB4JyBoZWlnaHQ9JzEyMHB4JyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJub25lIiBjbGFzcz0iYmsiPjwvcmVjdD4KICAgIDxyZWN0IHg9JzQ2LjUnIHk9JzQwJyB3aWR0aD0nNycgaGVpZ2h0PScyMCcgcng9JzUnIHJ5PSc1JyBmaWxsPScjRTlFOUU5JwogICAgICAgICAgdHJhbnNmb3JtPSdyb3RhdGUoMCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSc+CiAgICA8L3JlY3Q+CiAgICA8cmVjdCB4PSc0Ni41JyB5PSc0MCcgd2lkdGg9JzcnIGhlaWdodD0nMjAnIHJ4PSc1JyByeT0nNScgZmlsbD0nIzk4OTY5NycKICAgICAgICAgIHRyYW5zZm9ybT0ncm90YXRlKDMwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApJz4KICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0naW5kZWZpbml0ZScvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyM5Qjk5OUEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSg2MCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSc+CiAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9J2luZGVmaW5pdGUnLz4KICAgIDwvcmVjdD4KICAgIDxyZWN0IHg9JzQ2LjUnIHk9JzQwJyB3aWR0aD0nNycgaGVpZ2h0PScyMCcgcng9JzUnIHJ5PSc1JyBmaWxsPScjQTNBMUEyJwogICAgICAgICAgdHJhbnNmb3JtPSdyb3RhdGUoOTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNBQkE5QUEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxMjAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNCMkIyQjInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxNTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNCQUI4QjknCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxODAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNDMkMwQzEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyMTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNDQkNCQ0InCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyNDAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNEMkQyRDInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyNzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNEQURBREEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgzMDAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNFMkUyRTInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgzMzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0Pgo8L3N2Zz4=) no-repeat;  
            -webkit-background-size: 100%;  
            background-size: 100%;  
        }  

        @-webkit-keyframes weuiLoading {  
            0% {  
                -webkit-transform: rotate3d(0,0,1,0deg);  
            }  

            100% {  
                -webkit-transform: rotate3d(0,0,1,360deg);  
            }  
        }  

        @keyframes weuiLoading {  
            0% {  
                -webkit-transform: rotate3d(0,0,1,0deg);  
            }  

            100% {  
                -webkit-transform: rotate3d(0,0,1,360deg);  
            }  
        }  

        .gif_img_wrp {  
            display: inline-block;  
            font-size: 0;  
            position: relative;  
        }  

            .gif_img_wrp img {  
                min-height: 120px;  
                min-width: 120px;  
            }  

        .gif_img_tips {  
            background: rgba(0,0,0,0.6)!important;  
            filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#99000000',endcolorstr = '#99000000');  
            border-top-left-radius: 1.2em 50%;  
            -moz-border-radius-topleft: 1.2em 50%;  
            -webkit-border-top-left-radius: 1.2em 50%;  
            border-top-right-radius: 1.2em 50%;  
            -moz-border-radius-topright: 1.2em 50%;  
            -webkit-border-top-right-radius: 1.2em 50%;  
            border-bottom-left-radius: 1.2em 50%;  
            -moz-border-radius-bottomleft: 1.2em 50%;  
            -webkit-border-bottom-left-radius: 1.2em 50%;  
            border-bottom-right-radius: 1.2em 50%;  
            -moz-border-radius-bottomright: 1.2em 50%;  
            -webkit-border-bottom-right-radius: 1.2em 50%;  
            line-height: 2.3;  
            padding: 0 1em;  
            font-size: 11px;  
            color: #fff;  
            text-align: center;  
            position: absolute;  
            bottom: 10px;  
            left: 10px;  
        }  

            .gif_img_tips i {  
                vertical-align: middle;  
                margin: -0.2em .73em 0 -2px;  
            }  

        .gif_img_play_arrow {  
            display: inline-block;  
            width: 0;  
            height: 0;  
            border-width: 8px;  
            border-style: dashed;  
            border-color: transparent;  
            border-right-width: 0;  
            border-left-color: #fff;  
            border-left-style: solid;  
            border-width: 5px 0 5px 8px;  
        }  

        .gif_img_loading {  
            width: 14px;  
            height: 14px;  
        }  

        i.gif_img_loading {  
            margin-left: -4px;  
        }  

        .rich_media_global_msg {  
            position: fixed;  
            top: 0;  
            left: 0;  
            right: 0;  
            padding: .65em 35px .65em 15px;  
            z-index: 1;  
            background-color: #cde6ff;  
            color: #8c8c8c;  
            font-size: 13px;  
        }  

            .rich_media_global_msg .icon_closed {  
                position: absolute;  
                right: 15px;  
                top: 50%;  
                margin-top: -5px;  
                line-height: 300px;  
                overflow: hidden;  
                -webkit-tap-highlight-color: rgba(0,0,0,0);  
                background: transparent url(/mmbizwap/zh_CN/htmledition/images/icon/appmsg/icon_appmsg_msg_closed_sprite.2x.png) no-repeat 0 0;  
                width: 11px;  
                height: 11px;  
                vertical-align: middle;  
                display: inline-block;  
                -webkit-background-size: 100% auto;  
                background-size: 100% auto;  
            }  

                .rich_media_global_msg .icon_closed:active {  
                    background-position: 0 -17px;  
                }  

        .preview_appmsg .rich_media_title {  
            margin-top: 1.5em;  
        }  

        @media screen and (min-width:1024px) {  
            .rich_media_global_msg {  
                position: relative;  
                margin: 0 20px;  
            }  

            .preview_appmsg .rich_media_title {  
                margin-top: 0;  
            }  
        }  
    </style>  
    <style>  

    </style>  
    <!--[if lt IE 9]>  
<link rel="stylesheet" type="text/css" href="http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_pc2c9cd6.css">  
<![endif]-->  

    <script nonce="MOONSAFE_NONCE_1469070959" src="./流长生活网,邵东人自己的网购平台!_files/android2c5484.js" type="text/javascript" async=""></script>  
    <script nonce="MOONSAFE_NONCE_1469070959" src="./流长生活网,邵东人自己的网购平台!_files/qqmusic_tpl.html2f2e72.js" type="text/javascript" async=""></script>  
    <script nonce="MOONSAFE_NONCE_1469070959" src="./流长生活网,邵东人自己的网购平台!_files/attr275627.js" type="text/javascript" async=""></script>  
    <script nonce="MOONSAFE_NONCE_1469070959" src="./流长生活网,邵东人自己的网购平台!_files/event275627.js" type="text/javascript" async=""></script>  
    <script nonce="MOONSAFE_NONCE_1469070959" src="./流长生活网,邵东人自己的网购平台!_files/index2f3f48.js" type="text/javascript" async=""></script>  
    <link rel="stylesheet" type="text/css" href="./流长生活网,邵东人自己的网购平台!_files/page_mp_article_improve_combo2eb52b.css">  
    <link rel="stylesheet" type="text/css" href="./流长生活网,邵东人自己的网购平台!_files/not_in_mm2c9cd6.css">  
</head>  
<body id="activity-detail" class="zh_CN mm_appmsg not_in_mm" ontouchstart="">  

    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        var write_sceen_time = (+new Date());  
    </script>  

    <div id="js_article" class="rich_media">  

        <div id="js_top_ad_area" class="top_banner">  
        </div>  

        <div class="rich_media_inner">  

            <div id="page-content">  
                <div id="img-content" class="rich_media_area_primary">  
                    <h2 class="rich_media_title" id="activity-name">流长生活网,邵东人自己的网购平台!   
                    </h2>  
                    <div class="rich_media_meta_list">  
                        <em id="post-date" class="rich_media_meta rich_media_meta_text">2016-07-26</em>  

                        <em class="rich_media_meta rich_media_meta_text">流长生活</em>  
                        <a class="rich_media_meta rich_media_meta_link rich_media_meta_nickname" href="javascript:void(0);" id="post-user">流长生活</a>  
                        <span class="rich_media_meta rich_media_meta_text rich_media_meta_nickname">流长生活</span>  

                        <div id="js_profile_qrcode" class="profile_container" style="display: none;">  
                            <div class="profile_inner">  
                                <strong class="profile_nickname">流长生活</strong>  
                                <img class="profile_avatar" id="js_profile_qrcode_img" src="" alt="">  

                                <p class="profile_meta">  
                                    <label class="profile_meta_label">微信号</label>  
                                    <span class="profile_meta_value"></span>  
                                </p>  

                                <p class="profile_meta">  
                                    <label class="profile_meta_label">功能介绍</label>  
                                    <span class="profile_meta_value">一个本地的O2O购物平台,通过定位距离来智能推荐需要的商品。在这里你可以轻松找到你身边的特价产品。同时对你的商品进行比较,更方便找到你想要的商品。你也可以在这里入驻发布你的商品进行买卖,推荐好友加入进来,还能赚到相应的奖励。</span>  
                                </p>  

                            </div>  
                            <span class="profile_arrow_wrp" id="js_profile_arrow_wrp">  
                                <i class="profile_arrow arrow_out"></i>  
                                <i class="profile_arrow arrow_in"></i>  
                            </span>  
                        </div>  
                    </div>  

                    <div class="rich_media_content " id="js_content">  

                        <p style="color: rgb(54, 53, 51); widows: 1; outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; text-align: center; background-color: rgb(255, 255, 255);"><strong style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(229, 51, 51); font-size: 18px;"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; line-height: 26.6666679382324px;">  
                            <img src="images/liuchangLG-01.jpg" /></span></span><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(62, 62, 62); font-size: 18px;">进驻邵东啦!</span></strong></p>  
                        <p style="color: rgb(54, 53, 51); widows: 1; outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; text-align: center; background-color: rgb(255, 255, 255);"><strong style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(62, 62, 62); font-size: 18px;">邵东人有了自己的网购平台!</span></strong></p>  
                        <p style="color: rgb(54, 53, 51); widows: 1; outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; text-align: center; background-color: rgb(255, 255, 255);"><strong style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(62, 62, 62); font-size: 18px;">诚邀每位商家免费入住发布产品!诚邀有意从事电子商务平台事业者加盟!</span></strong></p>  
                        <p style="widows: 1; outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(62, 62, 62); text-align: center; background-color: rgb(255, 255, 255);"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; font-size: 18px;"><strong style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;">听到这消息,</span></strong></span></p>  
                        <p style="widows: 1; outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(62, 62, 62); text-align: center; background-color: rgb(255, 255, 255);"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; font-size: 18px;"><strong style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;"><span style="outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box;">心里都有点小激动。。</span></strong></span></p>  
                        <p style="widows: 1; outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; color: rgb(62, 62, 62); text-align: center; background-color: rgb(255, 255, 255);">  
                            <img width="300" height="640" src="images/liuzhilan (2).png" />  
                        </p>  
                        <p style="text-align: center;"><span style="font-size: 24px; color: rgb(255, 251, 0); background-color: rgb(255, 0, 0);">下载APP,有更多特价产品等着你哦!</span></p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160811144737.png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160811145506.png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160811145442.png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160811144927.png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160811144754.png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160811112240.png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104422_.jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104422_(3).jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104422_(2).jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104422_(1).jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104416_.jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104416_(2).jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/QQ20160810104416_(1).jpg" />  
                        </p>  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/739249a.png" />  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/ef4bd8a.png" />  
                        <p style="text-align: center;">  
                            <img width="300" height="640" src="images/c5e680a.png" />  
                        <p style="color: rgb(54, 53, 51); font-family: Helvetica, Arial, sans-serif; widows: 1; background-color: rgb(248, 247, 245); outline: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); box-sizing: border-box; text-align: center;">  
                            <img width="300" height="640" src="images/liuzhilan (2).png" />  
                        </p>  
                        <p style="text-align: center;">  
                            <br>  
                        </p>  
                    </div>  
                    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
                        var first_sceen__time = (+new Date());  

                        if ("" == 1 && document.getElementById('js_content'))  
                            document.getElementById('js_content').addEventListener("selectstart", function (e) { e.preventDefault(); });  

                        (function () {  
                            if (navigator.userAgent.indexOf("WindowsWechat") != -1) {  
                                var link = document.createElement('link');  
                                var head = document.getElementsByTagName('head')[0];  
                                link.rel = 'stylesheet';  
                                link.type = 'text/css';  
                                link.href = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_winwx2c9cd6.css";  
                                head.appendChild(link);  
                            }  
                        })();  
                    </script>  

                    <div class="rich_media_tool" id="js_toobar3">  
                        <div id="js_read_area3" class="media_tool_meta tips_global meta_primary" style="display: none;">阅读 <span id="readNum3"></span></div>  

                        <span style="display: none;" class="media_tool_meta meta_primary tips_global meta_praise" id="like3">  
                            <i class="icon_praise_gray"></i><span class="praise_num" id="likeNum3"></span>  
                        </span>  

                        <a id="js_report_article3" style="display: none;" class="media_tool_meta tips_global meta_extra" href="javascript:void(0);">投诉</a>  

                    </div>  

                </div>  

                <div class="rich_media_area_primary sougou" id="sg_tj" style="display: none">  
                </div>  

                <div class="rich_media_area_extra">  

                    <div class="mpda_bottom_container" id="js_bottom_ad_area">  
                    </div>  

                    <div id="js_iframetest" style="display: none;"></div>  

                </div>  

            </div>  
        </div>  
    </div>  

    <script nonce="MOONSAFE_NONCE_1469070959">  
        var __DEBUGINFO = {  
            debug_js: "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/debug/console2ca724.js",  
            safe_js: "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/safe/moonsafe2f3e84.js",  
            res_list: []  
        };  
    </script>  

    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        var not_in_mm_css = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/not_in_mm2c9cd6.css";  
        var windowwx_css = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_winwx2c9cd6.css";  
        var article_improve_combo_css = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_combo2eb52b.css";  
        var tid = "";  
        var aid = "";  
        var clientversion = "";  
        var appuin = "MzI1NDQwMTgzOQ==" || "";  

        var source = "";  
        var scene = 75;  

        var itemidx = "";  

        var _copyright_stat = "0";  
        var _ori_article_type = "";  

        var nickname = "流长生活";  
        var appmsg_type = "6";  
        var ct = "1469526996";  
        var publish_time = "2016-07-26" || "";  
        var user_name = "gh_2869079ba1a4";  
        var user_name_new = "";  
        var fakeid = "";  
        var version = "";  
        var is_limit_user = "0";  
        var round_head_img = "http://mmbiz.qpic.cn/mmbiz/axRia8KjuZretDqQryLGZDKxDKHvdxUs2uuot3UtDfqrhsDYzJSOEX8U6RguECepldfpf7DPr734NWQLia6Nptcg/0?wx_fmt=png";  
        var msg_title = "流长生活网,邵东人自己的网购平台!";  
        var msg_desc = "流长生活平台进驻邵东啦!邵东人有了自己的网购平台!听到这消息,心里都有点小激动。。";  
        var msg_cdn_url = "http://mmbiz.qpic.cn/mmbiz/axRia8KjuZretDqQryLGZDKxDKHvdxUs26UbcaibzeicL8Ap1ibPXe3Lc6fsmVT4u2b95k2sQQMUlms6PicO5teLicYA/0?wx_fmt=png";  
        var msg_link = "http://mp.weixin.qq.com/s?__biz=MzI1NDQwMTgzOQ==&amp;tempkey=zVLAk1I4T2jp1%2BbKhSOYJnCl%2F3VuPfj0URnQvjTt3skOkDJ%2BeTzFcvi4GPY3i%2BHFoV877ma9JIwiKTzAMriQIVH%2BPcc8xbDt4HSHgxA2cWU%2FmqqET2YbQmQ9CxBiF6MSR8bt%2B%2B0GKNTNWVWq4NgBFw%3D%3D&amp;#rd";  
        var user_uin = "0" * 1;  
        var msg_source_url = '';  
        var img_format = 'png';  
        var srcid = '';  
        var req_id = '2717q1xDaRhM67K6ZZcmHxjE';  
        var networkType;  
        var appmsgid = '' || '100000019' || "100000019";  
        var comment_id = "0" * 1;  
        var comment_enabled = "" * 1;  
        var is_need_reward = "0" * 1;  
        var is_https_res = ("" * 1) && (location.protocol == "https:");  

        var devicetype = "";  
        var source_encode_biz = "";  
        // var source_username = "";  
        // var profile_ext_signature = "" || "";  
        var reprint_ticket = "";  
        var source_mid = "";  
        var source_idx = "";  

        var show_comment = "";  
        var __appmsgCgiData = {  
            can_use_page: "0" * 1,  
            is_wxg_stuff_uin: "0" * 1,  
            card_pos: "",  
            copyright_stat: "0",  
            source_biz: "",  
            hd_head_img: "http://wx.qlogo.cn/mmhead/Q3auHgzwzM7lWXWNHt8pqUQZBSFbpPYH4Kh9948IGicf9aoxX14OwDg/0" || (window.location.protocol + "//" + window.location.host + "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/appmsg/pic_rumor_link.2x264e76.jpg")  
        };  
        var _empty_v = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/pages/voice/empty26f1f1.mp3";  

        var copyright_stat = "0" * 1;  

        var pay_fee = "" * 1;  
        var pay_timestamp = "";  
        var need_pay = "" * 1;  

        var need_report_cost = "0" * 1;  
        var use_tx_video_player = "0" * 1;  

        var friend_read_source = "" || "";  
        var friend_read_version = "" || "";  
        var friend_read_class_id = "" || "";  

        var is_only_read = "1" * 1;  
        var read_num = "1" * 1;  
        var like_num = "0" * 1;  
        var liked = "false" == 'true' ? true : false;  
        var is_temp_url = "zVLAk1I4T2jp1&amp;nbsp;bKhSOYJnCl/3VuPfj0URnQvjTt3skOkDJ&amp;nbsp;eTzFcvi4GPY3i&amp;nbsp;HFoV877ma9JIwiKTzAMriQIVH&amp;nbsp;Pcc8xbDt4HSHgxA2cWU/mqqET2YbQmQ9CxBiF6MS3I1hGohOy4F7TSTlxNZBXA==" ? 1 : 0;  
        var send_time = "1469612391";  
        var icon_emotion_switch = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_switch.2x2f1273.png";  
        var icon_emotion_switch_active = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_switch_active.2x2f1273.png";  
        var icon_loading_white = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/icon_loading_white2805ea.gif";  
        var icon_audio_unread = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/audio/icon_audio_unread26f1f1.png";  
        var icon_qqmusic_default = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/qqmusic/icon_qqmusic_default.2x26f1f1.png";  
        var icon_qqmusic_source = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/qqmusic/icon_qqmusic_source263724.png";  

        var topic_default_img = 'http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/topic/pic_book_thumb.2x2e4987.png';  

        // 话题卡片相关数据  
        var wxtopic = {  
            isbn: ""    // 书籍  
        };  

        var svr_time = "1469612392" * 1;  

        window.wxtoken = "";  
        window.__moon_initcallback = function () {  
            if (!!window.__initCatch) {  
                window.__initCatch({  
                    idkey: 27613,  
                    startKey: 0,  
                    limit: 128,  
                    badjsId: 43,  
                    reportOpt: {  
                        uin: uin,  
                        biz: biz,  
                        mid: mid,  
                        idx: idx,  
                        sn: sn  
                    },  
                    extInfo: {  
                        network_rate: 0.01    //网络错误采样率  
                    }  
                });  
            }  
        }  
    </script>  

    <script nonce="MOONSAFE_NONCE_1469070959">window.__moon_mainjs = 'appmsg/index.js'; window.moon_map = { "appmsg/emotion/caret.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/caret278965.js", "biz_wap/jsapi/cardticket.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/jsapi/cardticket275627.js", "appmsg/emotion/map.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/map278965.js", "appmsg/emotion/textarea.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/textarea27cdc5.js", "appmsg/emotion/nav.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/nav278965.js", "appmsg/emotion/common.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/common278965.js", "appmsg/emotion/slide.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/slide2a9cd9.js", "pages/report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/report2eec22.js", "pages/music_player.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/music_player2b674b.js", "pages/loadscript.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/loadscript2c9cd6.js", "appmsg/emotion/dom.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/dom2f3ac3.js", "appmsg/my_comment_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/my_comment_tpl.html2f3f48.js", "biz_wap/utils/hashrouter.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/hashrouter2805ea.js", "a/gotoappdetail.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/gotoappdetail2f33fb.js", "a/ios.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/ios275627.js", "a/android.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/android2c5484.js", "a/profile.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/profile2f1750.js", "a/mpshop.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/mpshop2f1750.js", "a/card.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/card2f1750.js", "biz_wap/utils/position.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/position2f1750.js", "appmsg/a_report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/a_report2f1750.js", "biz_common/utils/respTypes.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/respTypes2c57d0.js", "appmsg/cmt_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/cmt_tpl.html2a2c13.js", "sougou/a_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/sougou/a_tpl.html2c6e7c.js", "appmsg/emotion/emotion.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/emotion2f3ac3.js", "biz_common/utils/report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/report275627.js", "biz_common/utils/huatuo.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/huatuo293afc.js", "biz_common/utils/cookie.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/cookie275627.js", "appmsg/topic_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/topic_tpl.html2f2e72.js", "pages/voice_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/voice_tpl.html2f2e72.js", "pages/voice_component.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/voice_component2f3ac3.js", "pages/qqmusic_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/qqmusic_tpl.html2f2e72.js", "new_video/ctl.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/new_video/ctl2d441f.js", "biz_common/utils/monitor.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/monitor2a30ee.js", "biz_common/utils/spin.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/spin275627.js", "biz_wap/jsapi/pay.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/jsapi/pay275627.js", "appmsg/reward_entry.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/reward_entry2f3ac3.js", "appmsg/comment.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/comment2f3ac3.js", "appmsg/like.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/like2eb52b.js", "appmsg/a.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/a2f1750.js", "pages/version4video.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/version4video2e481d.js", "rt/appmsg/getappmsgext.rt.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/rt/appmsg/getappmsgext.rt2c21f6.js", "biz_wap/utils/storage.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/storage2a74ac.js", "biz_common/tmpl.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/tmpl2b3578.js", "appmsg/img_copyright_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/img_copyright_tpl.html2a2c13.js", "appmsg/a_tpl.html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/a_tpl.html2f1750.js", "biz_common/ui/imgonepx.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/ui/imgonepx275627.js", "biz_common/dom/attr.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/dom/attr275627.js", "biz_wap/utils/ajax.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/ajax2f1747.js", "biz_common/utils/string/html.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/string/html29f4e9.js", "sougou/index.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/sougou/index2c7543.js", "biz_wap/safe/mutation_observer_report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/safe/mutation_observer_report2f3e84.js", "appmsg/report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/report2f3ac3.js", "appmsg/report_and_source.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/report_and_source2f1274.js", "appmsg/page_pos.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/page_pos2ec4b2.js", "appmsg/cdn_speed_report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/cdn_speed_report2c57d0.js", "appmsg/wxtopic.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/wxtopic2f2e72.js", "appmsg/voice.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/voice2f2e72.js", "appmsg/qqmusic.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/qqmusic2f2e72.js", "appmsg/iframe.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/iframe2ef6ca.js", "appmsg/review_image.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/review_image2d0cfe.js", "appmsg/outer_link.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/outer_link275627.js", "biz_wap/jsapi/core.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/jsapi/core2f0d45.js", "biz_common/dom/event.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/dom/event275627.js", "appmsg/copyright_report.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/copyright_report2ec4b2.js", "appmsg/cache.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/cache2a74ac.js", "appmsg/pay_for_reading.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/pay_for_reading2c5484.js", "appmsg/async.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/async2f1750.js", "biz_wap/ui/lazyload_img.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/ui/lazyload_img2ec99a.js", "biz_common/log/jserr.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/log/jserr2805ea.js", "appmsg/share.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/share2ec548.js", "biz_wap/utils/mmversion.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/mmversion2f1d97.js", "appmsg/cdn_img_lib.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/cdn_img_lib275627.js", "biz_common/utils/url/parse.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/url/parse2dd7fd.js", "biz_common/dom/class.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/dom/class275627.js", "biz_wap/utils/device.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/device2b3aae.js", "biz_wap/jsapi/a8key.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/jsapi/a8key2a30ee.js", "appmsg/index.js": "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/index2f3f48.js" };</script>  
    <script nonce="MOONSAFE_NONCE_1469070959" async="" type="text/javascript" src="./流长生活网,邵东人自己的网购平台!_files/moon2f0d45.js"></script>  
    <script nonce="MOONSAFE_NONCE_1469070959" type="text/javascript">  
        var real_show_page_time = +new Date();  
        if (!!window.addEventListener) {  
            window.addEventListener("load", function () {  
                window.onload_endtime = +new Date();  
            });  
        }  

    </script>  

    <!--tailTrap<body></body><head></head><html></html>-->  

</body>  
</html>  
收起阅读 »

【示例】mui.getJSONP()实现Web跨域

技术分享 ajax mui 跨域 跨域请求 AJAX跨域 jsonp

问题描述

许多开发者使用mui.ajax()在浏览器中调试时,控制台总会出现这样的错误信息:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
出现这种错误的原因在于浏览器的同源策略,使得本域脚本只能读写本域内的资源,而无法访问其它域的资源,造成了我们常说的“跨域”问题。

问题分析

Web跨域访问的实现

浅谈WEB跨域的实现(前端向)
Web应用跨域访问解决方案汇总
网上有许多关于跨域问题的解决方案,这里知识提供两篇文章供大家参考。

JSON和JSONP

提起跨域实现,其实最容易想到的就是JSONP。这种技术方案已经非常流行,网上也有大量的资料供我们学习和参考。
说说JSON和JSONP,也许你会豁然开朗
jsonp详解
JSONP 的工作原理是什么?
JSONP 教程

解决方案

mui.ajax()

查看源码我们会发现mui.ajax()会根据运行情景的不同,而创建不同的XMLHttpRequest。
扩展阅读mui.ajax()方法中的XMLHttpRequest

在5+默认的UIWebview中被允许调用window的XHR进行跨域访问。
并且5+提供的XHR也是可以进行跨域访问的。
如何判断Runtime是否支持5+ API

mui.getJSONP()

mui同样提供了JSONP的插件(mui.jsonp.js见附件)来实现Web跨域,方法为mui.getJSONP()。
该方法有三个参数:

  • url——请求发送的目标地址(String)
  • data——发送到服务器的业务数据(Object)
  • callback——请求回调函数(Function)

请求方式默认并始终是GET方式,因为JSONP实际是在客户端动态添加了个<script></script>然后将url指向要请求的地址,script是没有同源策略的。

示例(后端为php)

php部分

<?php  
header('Content-type: application/json');  
//获取回调函数名  
$callbackName = $_GET["callback"];  
//json数据  
$json_data = '["customername1","customername2"]';  
//输出jsonp格式的数据  
echo $callbackName."(" . $json_data . ")";  
?>  

JS部分

需要引入mui.js以及mui.jsonp.js

var data = {  
    name: 'xiaoming',  
    code: '200'  
};  
mui.getJSONP('http://192.168.12.74/jsonp.php', data, function(data) {  
    console.log(data);  
});  

mui.getJSONP()方法传递给服务器的回调函数的请求参数名在callback的参数中。

源码

附上源码,测试的时候记得更换下IP地址。

继续阅读 »

问题描述

许多开发者使用mui.ajax()在浏览器中调试时,控制台总会出现这样的错误信息:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
出现这种错误的原因在于浏览器的同源策略,使得本域脚本只能读写本域内的资源,而无法访问其它域的资源,造成了我们常说的“跨域”问题。

问题分析

Web跨域访问的实现

浅谈WEB跨域的实现(前端向)
Web应用跨域访问解决方案汇总
网上有许多关于跨域问题的解决方案,这里知识提供两篇文章供大家参考。

JSON和JSONP

提起跨域实现,其实最容易想到的就是JSONP。这种技术方案已经非常流行,网上也有大量的资料供我们学习和参考。
说说JSON和JSONP,也许你会豁然开朗
jsonp详解
JSONP 的工作原理是什么?
JSONP 教程

解决方案

mui.ajax()

查看源码我们会发现mui.ajax()会根据运行情景的不同,而创建不同的XMLHttpRequest。
扩展阅读mui.ajax()方法中的XMLHttpRequest

在5+默认的UIWebview中被允许调用window的XHR进行跨域访问。
并且5+提供的XHR也是可以进行跨域访问的。
如何判断Runtime是否支持5+ API

mui.getJSONP()

mui同样提供了JSONP的插件(mui.jsonp.js见附件)来实现Web跨域,方法为mui.getJSONP()。
该方法有三个参数:

  • url——请求发送的目标地址(String)
  • data——发送到服务器的业务数据(Object)
  • callback——请求回调函数(Function)

请求方式默认并始终是GET方式,因为JSONP实际是在客户端动态添加了个<script></script>然后将url指向要请求的地址,script是没有同源策略的。

示例(后端为php)

php部分

<?php  
header('Content-type: application/json');  
//获取回调函数名  
$callbackName = $_GET["callback"];  
//json数据  
$json_data = '["customername1","customername2"]';  
//输出jsonp格式的数据  
echo $callbackName."(" . $json_data . ")";  
?>  

JS部分

需要引入mui.js以及mui.jsonp.js

var data = {  
    name: 'xiaoming',  
    code: '200'  
};  
mui.getJSONP('http://192.168.12.74/jsonp.php', data, function(data) {  
    console.log(data);  
});  

mui.getJSONP()方法传递给服务器的回调函数的请求参数名在callback的参数中。

源码

附上源码,测试的时候记得更换下IP地址。

收起阅读 »