微信小程序开发 --- 小白之路 --- 心得
<h1>1.前言</h1><p>今天 ,发现我的饭卡不见了。。。。悲催 ,看了一下学校的微信小程序,查了下我这饭卡的流水记录,嗯。。。最后出现的地方在洗澡房。。。</p>
<p>好吧,扯远了,虽然没找到,可是突发奇想 ,小程序挺方便的,我能不能做一个?</p>
<p>。。。。。</p>
<p>事实上,充钱就行!!!</p>
<p>百度搜了一下关于微信小程序的开发教程。。。显示的基本上是广告,都是小程序外包。。。我有钱还自己开发?笑话!!!贫穷使我自力更生!!!</p>
<p>。。。。。</p>
<p>直接去博客找资料,总有那么几个前辈把路给我们铺好了,只是有些是桥,有些是泥巴路,喀喀喀,总比没有好。</p>
<p> </p>
<p>这位前辈 详细介绍了微信小程序能干什么 ,博文原址 : https://www.cnblogs.com/jingwhale/p/11255805.html</p>
<p> </p>
<p>。。。。<span style="color: rgba(255, 102, 0, 1); font-size: 18pt">反正一开始我看的是一脸懵逼</span>。。。。</p>
<h1>2.话不多说,看看效果</h1>
<p> <img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516150638420-217145644.png"> </p>
<p>我做的小程序名字叫岑惜 </p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516150830617-110051642.png"></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>跳转进入登录页</p>
<p> </p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516150948276-715173998.png"></p>
<p> </p>
<p> 好了。。。其他就不展示了 ,其实想要做这个小程序,其实蛮简单的 ,说到底还是需要成本的,因为访问外链的话 ,是需要去微信公众平台 认证域名 ,还有要有 https协议的域名才可以访问 。。。这就很蛋疼了。。。</p>
<p>算一下帐 ,</p>
<p>(1)需要认证https ,则必须 有SSL证书,需要买的,个人可以免费一年 ,企业的则需要几千块钱,记得以前看的是4千块钱左右,具体看官网报价,</p>
<p>(2)需要认证ssl证书,那么需要有一个已经备案的域名才可以,域名10到80块不等 ;</p>
<p>(3)想要绑定域名并且成功备案,那么最少需要租一年服务器,有学生优惠还好,需要120左右 ,如果没有学生优惠,那就贵了,一年服务器需要1千到3千不等,<br>算了一下,如果不是学生大概需要六千多一年的运营成本,如果是学生,需要200左右, 如果想要接入支付入口,则还需要支付300块钱的手续费。。。。。</p>
<p>好吧,我觉得,如果不是要商用,没必要自己开一个可以发布的小程序,太贵了,完全可以使用开发者模式,自娱自乐就够了,当前,有钱人可以当我没说!!!</p>
<h1> 3.开发者权限认证</h1>
<p>需要登录微信公众号平台,网址 : https://mp.weixin.qq.com/</p>
<p>需要先注册</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516152950612-1060104214.png"></p>
<p> </p>
<p> </p>
<p> <img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516153021687-1396902252.png"></p>
<p> </p>
<p> </p>
<p>填写信息,跟着一步一步来就可以了 ,邮箱可以使用qq邮箱</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516153036297-2022009115.png"></p>
<p> </p>
<p> </p>
<p> 注册好了之后,返回主页,可以 用微信扫描登录</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516153226864-734240987.png"></p>
<p> </p>
<p> </p>
<p>登陆后的页面,进入主页,</p>
<p>菜单栏找到设置,填写信息</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516153509321-970023275.png"></p>
<p> </p>
<p> </p>
<p>记住你的小程序id ,这很重要 ,在开发者工具里面需要认证的</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516153728099-1129359306.png"></p>
<p> </p>
<p> 现在去获取开发者权限</p>
<p>菜单找到 开发</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516153942664-950105704.png"></p>
<p> </p>
<p> 设置开发者id ,上传密码、服务器域名信息 ,</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516154101752-238604042.png"></p>
<p> </p>
<p> </p>
<p> </p>
<p>基本的设置差不多了,还有其他设置自己琢磨,我就不演示了,</p>
<h1>3.下载开发者工具</h1>
<p>网址 : https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html</p>
<p>选择需要的系统版本,建议下载稳定版</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516154308841-281336311.png"></p>
<p> </p>
<p> </p>
<p>下载后安装,傻瓜式一键安装 ,安装完开启,直接就是微信扫码界面了</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516154527848-1642666552.png"></p>
<p> </p>
<h1> </h1>
<h1>4.新建小程序工程</h1>
<p> </p>
<p> </p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516154634481-1735102725.png"></p>
<p> </p>
<p> <img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516154825096-1589963753.png"></p>
<p> </p>
<p> 信息填写好,点击新建,然后等待加载开发页面 ,看起来有点像浏览器,其实更像android开发工具</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516154950408-681527308.png"></p>
<p> </p>
<p> 我应该做个目录说明</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516155919044-1412721945.png"></p>
<p> </p>
<p> 有个 login和chi文件夹 ,那是我自己建的页面,</p>
<p>每个页面的文件应该都放在一个文件夹里,这样不会乱</p>
<p>,就像这样</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516160050781-1722714350.png"></p>
<p> </p>
<h1>5.新建页面</h1>
<p> 那么问题来了 ,怎么创建新页面?</p>
<p>在pages文件夹 右键,新建文件夹 ,</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516160406552-2084373469.png"></p>
<p> </p>
<p> 我新建了一个叫 newPage的文件夹</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516160459661-553575144.png"></p>
<p> </p>
<p> </p>
<p> 右键这文件夹,选择新建 Page</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516160611811-1366446552.png"></p>
<p> </p>
<p> 填写名字,最好是与文件夹名字一致,回车确定</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516160713755-2029315962.png"></p>
<p> </p>
<p> </p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516160834292-150770001.png"></p>
<p> </p>
<p> </p>
<h1>6.修改小程序标题</h1>
<p> </p>
<p>需要去全局变量才能修改标题 ,所有的页面都写着pages里面,一般会自动添加,但是不会自动删除,需要手动修改,不然报错无法运行</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516161855476-360810504.png"></p>
<p> </p>
<h1> 7.跳到下一页</h1>
<p>如何进入下一页?需要 在js文件控制页面跳转 ,使用 vue.js一样的语法 ,控制 页面组件</p>
<p>我这里做一个 点击 文字 “欢迎进入岑惜随笔” 就会进入下一页面 【当然,也可以做一个计时器 自动跳转页面】</p>
<p>先看看 js怎么写 【这是默认的初始页,对应的页面名是 index】</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516162508546-665150200.png"></p>
<p> </p>
<p> </p>
<p>自定义做了个方法 toLogin </p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516162704181-918314751.png"></p>
<p> </p>
<p> 现在需要去wxml文件绑定触发组件</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516162813907-638198067.png"></p>
<p> </p>
<p>修改文件后,点击保存</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516171340652-732659301.png"></p>
<p> </p>
<p> 打开手机微信后 ,点击真机测试 </p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516171428496-2130444717.png"></p>
<p> </p>
<p> <img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516171446884-1350412144.png"></p>
<p> </p>
<p>手机授权后,等一会手机就会自动弹出小程序运行啦 ,啦啦啦啦,也可以使用开发工具的小程序页面展示窗口操作,其实那就是一个手机模拟器</p>
<h1>8.跳回指定的上一页</h1>
<p>在微信默认方法 onUnload 设置</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516171925076-1920136564.png"></p>
<p> </p>
<p> </p>
<h1>9.如何使用外链访问呢?</h1>
<p>很简单</p>
<p>在wxml文件一句话即可 ,那是个浏览器容器 ,缺点是 会将整个屏幕占有,无法设置窗口大小</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516172040721-2075801605.png"></p>
<p> </p>
<p> 网址我写在 js文件里</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516172153720-1678015366.png"></p>
<p> </p>
<p> 访问 效果</p>
<p> <img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516180815152-452911166.png"></p>
<h1>10.从外链主动回到小程序</h1>
<p>那么,如果想要从外链主动回到小程序怎么实现呢?</p>
<p>微信已经做好了很多由js调用微信的接口了,这个浏览器容器其实类似于标签 《iframe》 ,可以在外链调用js脚本接口回到小程序,</p>
<p>但是需要加载微信做好的js脚本</p>
<p>可以使用《script》网址加载,</p>
<p> <script src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script></p>
<p>也可以写在本地加载</p>
<p>完整的js源码</p>
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_b87add22-902d-4c0b-a53a-8799ef87bb01" class="code_img_opened lazyload" style="display: none" alt="" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_b87add22-902d-4c0b-a53a-8799ef87bb01" class="cnblogs_code_hide">
<pre>!<span style="color: rgba(0, 0, 0, 1)">function (e, n) {
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">function</span><span style="color: rgba(128, 0, 0, 1)">"</span> == <span style="color: rgba(0, 0, 255, 1)">typeof</span> define && (define.amd || define.cmd) ?<span style="color: rgba(0, 0, 0, 1)"> define(function () {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> n(e)
}) : n(e, </span>!<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
}(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">, function (e, n) {
function i(n, i, t) {
e.WeixinJSBridge </span>?<span style="color: rgba(0, 0, 0, 1)"> WeixinJSBridge.invoke(n, o(i), function (e) {
c(n, e, t)
}) : u(n, t)
}
function t(n, i, t) {
e.WeixinJSBridge </span>?<span style="color: rgba(0, 0, 0, 1)"> WeixinJSBridge.on(n, function (e) {
t </span>&& t.trigger &&<span style="color: rgba(0, 0, 0, 1)"> t.trigger(e), c(n, e, i)
}) : t </span>?<span style="color: rgba(0, 0, 0, 1)"> u(n, t) : u(n, i)
}
function o(e) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> e = e || {}, e.appId = C.appId, e.verifyAppId = C.appId, e.verifySignType = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sha1</span><span style="color: rgba(128, 0, 0, 1)">"</span>, e.verifyTimestamp = C.timestamp + <span style="color: rgba(128, 0, 0, 1)">""</span>, e.verifyNonceStr = C.nonceStr, e.verifySignature =<span style="color: rgba(0, 0, 0, 1)"> C.signature, e
}
function r(e) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
timeStamp: e.timestamp </span>+ <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
nonceStr: e.nonceStr,
package: e.package,
paySign: e.paySign,
signType: e.signType </span>|| <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">SHA1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
}
}
function a(e) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> e.postalCode = e.addressPostalCode, delete e.addressPostalCode, e.provinceName = e.proviceFirstStageName, delete e.proviceFirstStageName, e.cityName = e.addressCitySecondStageName, delete e.addressCitySecondStageName, e.countryName = e.addressCountiesThirdStageName, delete e.addressCountiesThirdStageName, e.detailInfo =<span style="color: rgba(0, 0, 0, 1)"> e.addressDetailInfo, delete e.addressDetailInfo, e
}
function c(e, n, i) {
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">openEnterpriseChat</span><span style="color: rgba(128, 0, 0, 1)">"</span> == e && (n.errCode =<span style="color: rgba(0, 0, 0, 1)"> n.err_code), delete n.err_code, delete n.err_desc, delete n.err_detail;
</span><span style="color: rgba(0, 0, 255, 1)">var</span> t =<span style="color: rgba(0, 0, 0, 1)"> n.errMsg;
t </span>|| (t = n.err_msg, delete n.err_msg, t = s(e, t), n.errMsg = t), (i = i || {})._complete && (i._complete(n), delete i._complete), t = n.errMsg || <span style="color: rgba(128, 0, 0, 1)">""</span>, C.debug && !i.isInnerInvoke &&<span style="color: rgba(0, 0, 0, 1)"> alert(JSON.stringify(n));
</span><span style="color: rgba(0, 0, 255, 1)">var</span> o = t.indexOf(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">switch</span> (t.substring(o + <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(0, 0, 255, 1)">case</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ok</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:
i.success </span>&&<span style="color: rgba(0, 0, 0, 1)"> i.success(n);
</span><span style="color: rgba(0, 0, 255, 1)">break</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">case</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cancel</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:
i.cancel </span>&&<span style="color: rgba(0, 0, 0, 1)"> i.cancel(n);
</span><span style="color: rgba(0, 0, 255, 1)">break</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)">:
i.fail </span>&&<span style="color: rgba(0, 0, 0, 1)"> i.fail(n)
}
i.complete </span>&&<span style="color: rgba(0, 0, 0, 1)"> i.complete(n)
}
function s(e, n) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> i = e, t =<span style="color: rgba(0, 0, 0, 1)"> v;
t </span>&& (i =<span style="color: rgba(0, 0, 0, 1)"> t);
</span><span style="color: rgba(0, 0, 255, 1)">var</span> o = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ok</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (n) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> r = n.indexOf(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">confirm</span><span style="color: rgba(128, 0, 0, 1)">"</span> == (o = n.substring(r + <span style="color: rgba(128, 0, 128, 1)">1</span>)) && (o = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ok</span><span style="color: rgba(128, 0, 0, 1)">"</span>), <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">failed</span><span style="color: rgba(128, 0, 0, 1)">"</span> == o && (o = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">fail</span><span style="color: rgba(128, 0, 0, 1)">"</span>), -<span style="color: rgba(128, 0, 128, 1)">1</span> != o.indexOf(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">failed_</span><span style="color: rgba(128, 0, 0, 1)">"</span>) && (o = o.substring(<span style="color: rgba(128, 0, 128, 1)">7</span>)), -<span style="color: rgba(128, 0, 128, 1)">1</span> != o.indexOf(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">fail_</span><span style="color: rgba(128, 0, 0, 1)">"</span>) && (o = o.substring(<span style="color: rgba(128, 0, 128, 1)">5</span>)), <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">access denied</span><span style="color: rgba(128, 0, 0, 1)">"</span> != (o = (o = o.replace(/_/g, <span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 0, 1)">"</span>)).toLowerCase()) && <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">no permission to execute</span><span style="color: rgba(128, 0, 0, 1)">"</span> != o || (o = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">permission denied</span><span style="color: rgba(128, 0, 0, 1)">"</span>), <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">config</span><span style="color: rgba(128, 0, 0, 1)">"</span> == i && <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">function not exist</span><span style="color: rgba(128, 0, 0, 1)">"</span> == o && (o = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ok</span><span style="color: rgba(128, 0, 0, 1)">"</span>), <span style="color: rgba(128, 0, 0, 1)">""</span> == o && (o = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">fail</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> n = i + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">:</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> o
}
function d(e) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (e) {
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">var</span> n = <span style="color: rgba(128, 0, 128, 1)">0</span>, i = e.length; n < i; ++<span style="color: rgba(0, 0, 0, 1)">n) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> t = e, o =<span style="color: rgba(0, 0, 0, 1)"> h;
o </span>&& (e =<span style="color: rgba(0, 0, 0, 1)"> o)
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> e
}
}
function u(e, n) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!(!C.debug || n &&<span style="color: rgba(0, 0, 0, 1)"> n.isInnerInvoke)) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> i =<span style="color: rgba(0, 0, 0, 1)"> v;
i </span>&& (e = i), n && n._complete && delete n._complete, console.log(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">'</span> + e + <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">",</span><span style="color: rgba(128, 0, 0, 1)">'</span>, n || <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">)
}
}
function l(e) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!(w || T || C.debug || x < <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">6.0.2</span><span style="color: rgba(128, 0, 0, 1)">"</span> || V.systemType < <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> n = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Image;
V.appId </span>= C.appId, V.initTime = A.initEndTime - A.initStartTime, V.preVerifyTime = A.preVerifyEndTime -<span style="color: rgba(0, 0, 0, 1)"> A.preVerifyStartTime, N.getNetworkType({
isInnerInvoke: </span>!<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">,
success: function (e) {
V.networkType </span>=<span style="color: rgba(0, 0, 0, 1)"> e.networkType;
</span><span style="color: rgba(0, 0, 255, 1)">var</span> i = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://open.weixin.qq.com/sdk/report?v=</span><span style="color: rgba(128, 0, 0, 1)">"</span> + V.version + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">&o=</span><span style="color: rgba(128, 0, 0, 1)">"</span> + V.isPreVerifyOk + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">&s=</span><span style="color: rgba(128, 0, 0, 1)">"</span> + V.systemType + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">&c=</span><span style="color: rgba(128, 0, 0, 1)">"</span> + V.clientVersion + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">&a=</span><span style="color: rgba(128, 0, 0, 1)">"</span> + V.appId + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">&n=</span><span style="color: rgba(128, 0, 0, 1)">"</span> + V.networkType + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">&i=</span><span style="color: rgba(128, 0, 0, 1)">"</span> + V.initTime + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">&p=</span><span style="color: rgba(128, 0, 0, 1)">"</span> + V.preVerifyTime + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">&u=</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> V.url;
n.src </span>=<span style="color: rgba(0, 0, 0, 1)"> i
}
})
}
}
function p() {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> (<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Date).getTime()
}
function f(n) {
k </span>&& (e.WeixinJSBridge ? n() : I.addEventListener && I.addEventListener(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">WeixinJSBridgeReady</span><span style="color: rgba(128, 0, 0, 1)">"</span>, n, !<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">))
}
function m() {
N.invoke </span>|| (N.invoke =<span style="color: rgba(0, 0, 0, 1)"> function (n, i, t) {
e.WeixinJSBridge </span>&&<span style="color: rgba(0, 0, 0, 1)"> WeixinJSBridge.invoke(n, o(i), t)
}, N.on </span>=<span style="color: rgba(0, 0, 0, 1)"> function (n, i) {
e.WeixinJSBridge </span>&&<span style="color: rgba(0, 0, 0, 1)"> WeixinJSBridge.on(n, i)
})
}
function g(e) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">string</span><span style="color: rgba(128, 0, 0, 1)">"</span> == <span style="color: rgba(0, 0, 255, 1)">typeof</span> e && e.length > <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> n = e.split(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">?</span><span style="color: rgba(128, 0, 0, 1)">"</span>)[<span style="color: rgba(128, 0, 128, 1)">0</span>], i = e.split(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">?</span><span style="color: rgba(128, 0, 0, 1)">"</span>)[<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">];
</span><span style="color: rgba(0, 0, 255, 1)">return</span> n += <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">.html</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 0, 255, 1)">void</span> <span style="color: rgba(128, 0, 128, 1)">0</span> !== i ? n + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">?</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> i : n
}
}
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 0, 1)">e.jWeixin) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> h =<span style="color: rgba(0, 0, 0, 1)"> {
config: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">preVerifyJSAPI</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
onMenuShareTimeline: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">menu:share:timeline</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
onMenuShareAppMessage: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">menu:share:appmessage</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
onMenuShareQQ: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">menu:share:qq</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
onMenuShareWeibo: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">menu:share:weiboApp</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
onMenuShareQZone: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">menu:share:QZone</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
previewImage: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">imagePreview</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
getLocation: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">geoLocation</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
openProductSpecificView: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">openProductViewWithPid</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
addCard: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">batchAddCard</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
openCard: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">batchViewCard</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
chooseWXPay: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">getBrandWCPayRequest</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
openEnterpriseRedPacket: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">getRecevieBizHongBaoRequest</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
startSearchBeacons: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">startMonitoringBeacons</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
stopSearchBeacons: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">stopMonitoringBeacons</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
onSearchBeacons: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">onBeaconsInRange</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
consumeAndShareCard: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">consumedShareCard</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
openAddress: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">editAddress</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
}, v </span>=<span style="color: rgba(0, 0, 0, 1)"> function () {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> e =<span style="color: rgba(0, 0, 0, 1)"> {};
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">var</span> n <span style="color: rgba(0, 0, 255, 1)">in</span> h) e] =<span style="color: rgba(0, 0, 0, 1)"> n;
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> e
}(), I </span>= e.document, S = I.title, y = navigator.userAgent.toLowerCase(), _ =<span style="color: rgba(0, 0, 0, 1)"> navigator.platform.toLowerCase(),
w </span>= !(!_.match(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mac</span><span style="color: rgba(128, 0, 0, 1)">"</span>) && !_.match(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">win</span><span style="color: rgba(128, 0, 0, 1)">"</span>)), T = -<span style="color: rgba(128, 0, 128, 1)">1</span> != y.indexOf(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wxdebugger</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">),
k </span>= -<span style="color: rgba(128, 0, 128, 1)">1</span> != y.indexOf(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">micromessenger</span><span style="color: rgba(128, 0, 0, 1)">"</span>), M = -<span style="color: rgba(128, 0, 128, 1)">1</span> != y.indexOf(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">android</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">),
P </span>= -<span style="color: rgba(128, 0, 128, 1)">1</span> != y.indexOf(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">iphone</span><span style="color: rgba(128, 0, 0, 1)">"</span>) || -<span style="color: rgba(128, 0, 128, 1)">1</span> != y.indexOf(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ipad</span><span style="color: rgba(128, 0, 0, 1)">"</span>), x =<span style="color: rgba(0, 0, 0, 1)"> function () {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> e = y.match(/micromessenger\/(\d+\.\d+\.\d+)/) || y.match(/micromessenger\/(\d+\.\d+)/<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">return</span> e ? e[<span style="color: rgba(128, 0, 128, 1)">1</span>] : <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
}(), A </span>= {initStartTime: p(), initEndTime: <span style="color: rgba(128, 0, 128, 1)">0</span>, preVerifyStartTime: <span style="color: rgba(128, 0, 128, 1)">0</span>, preVerifyEndTime: <span style="color: rgba(128, 0, 128, 1)">0</span>}, V =<span style="color: rgba(0, 0, 0, 1)"> {
version: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">,
appId: </span><span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
initTime: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">,
preVerifyTime: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">,
networkType: </span><span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
isPreVerifyOk: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">,
systemType: P </span>? <span style="color: rgba(128, 0, 128, 1)">1</span> : M ? <span style="color: rgba(128, 0, 128, 1)">2</span> : -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">,
clientVersion: x,
url: encodeURIComponent(location.href)
}, C </span>= {}, L = {_completes: []}, B = {state: <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">, data: {}};
f(function () {
A.initEndTime </span>=<span style="color: rgba(0, 0, 0, 1)"> p()
});
</span><span style="color: rgba(0, 0, 255, 1)">var</span> O = !<span style="color: rgba(128, 0, 128, 1)">1</span>, E = [], N =<span style="color: rgba(0, 0, 0, 1)"> {
config: function (e) {
C </span>= e, u(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">config</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, e);
</span><span style="color: rgba(0, 0, 255, 1)">var</span> n = !<span style="color: rgba(128, 0, 128, 1)">1</span> !==<span style="color: rgba(0, 0, 0, 1)"> C.check;
f(function () {
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (n) i(h.config, {verifyJsApiList: d(C.jsApiList)}, function () {
L._complete </span>=<span style="color: rgba(0, 0, 0, 1)"> function (e) {
A.preVerifyEndTime </span>= p(), B.state = <span style="color: rgba(128, 0, 128, 1)">1</span>, B.data =<span style="color: rgba(0, 0, 0, 1)"> e
}, L.success </span>=<span style="color: rgba(0, 0, 0, 1)"> function (e) {
V.isPreVerifyOk </span>= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
}, L.fail </span>=<span style="color: rgba(0, 0, 0, 1)"> function (e) {
L._fail </span>? L._fail(e) : B.state = -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
};
</span><span style="color: rgba(0, 0, 255, 1)">var</span> e =<span style="color: rgba(0, 0, 0, 1)"> L._completes;
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> e.push(function () {
l()
}), L.complete </span>=<span style="color: rgba(0, 0, 0, 1)"> function (n) {
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">var</span> i = <span style="color: rgba(128, 0, 128, 1)">0</span>, t = e.length; i < t; ++<span style="color: rgba(0, 0, 0, 1)">i) e();
L._completes </span>=<span style="color: rgba(0, 0, 0, 1)"> []
}, L
}()), A.preVerifyStartTime </span>= p(); <span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
B.state </span>= <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">var</span> e = L._completes, t = <span style="color: rgba(128, 0, 128, 1)">0</span>, o = e.length; t < o; ++<span style="color: rgba(0, 0, 0, 1)">t) e();
L._completes </span>=<span style="color: rgba(0, 0, 0, 1)"> []
}
}), m()
}, ready: function (e) {
</span><span style="color: rgba(128, 0, 128, 1)">0</span> != B.state ? e() : (L._completes.push(e), !k && C.debug &&<span style="color: rgba(0, 0, 0, 1)"> e())
}, error: function (e) {
x </span>< <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">6.0.2</span><span style="color: rgba(128, 0, 0, 1)">"</span> || (-<span style="color: rgba(128, 0, 128, 1)">1</span> == B.state ? e(B.data) : L._fail =<span style="color: rgba(0, 0, 0, 1)"> e)
}, checkJsApi: function (e) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> n =<span style="color: rgba(0, 0, 0, 1)"> function (e) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> n =<span style="color: rgba(0, 0, 0, 1)"> e.checkResult;
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">var</span> i <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> n) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> t =<span style="color: rgba(0, 0, 0, 1)"> v;
t </span>&& (n =<span style="color: rgba(0, 0, 0, 1)"> n, delete n)
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> e
};
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">checkJsApi</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {jsApiList: d(e.jsApiList)}, (e._complete =<span style="color: rgba(0, 0, 0, 1)"> function (e) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (M) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> i =<span style="color: rgba(0, 0, 0, 1)"> e.checkResult;
i </span>&& (e.checkResult =<span style="color: rgba(0, 0, 0, 1)"> JSON.parse(i))
}
e </span>=<span style="color: rgba(0, 0, 0, 1)"> n(e)
}, e))
}, onMenuShareTimeline: function (e) {
t(h.onMenuShareTimeline, {
complete: function () {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">shareTimeline</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
title: e.title </span>||<span style="color: rgba(0, 0, 0, 1)"> S,
desc: e.title </span>||<span style="color: rgba(0, 0, 0, 1)"> S,
img_url: e.imgUrl </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
link: e.link </span>||<span style="color: rgba(0, 0, 0, 1)"> location.href,
type: e.type </span>|| <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">link</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
data_url: e.dataUrl </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
}, e)
}
}, e)
}, onMenuShareAppMessage: function (e) {
t(h.onMenuShareAppMessage, {
complete: function (n) {
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">favorite</span><span style="color: rgba(128, 0, 0, 1)">"</span> === n.scene ? i(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sendAppMessage</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
title: e.title </span>||<span style="color: rgba(0, 0, 0, 1)"> S,
desc: e.desc </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
link: e.link </span>||<span style="color: rgba(0, 0, 0, 1)"> location.href,
img_url: e.imgUrl </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
type: e.type </span>|| <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">link</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
data_url: e.dataUrl </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
}) : i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sendAppMessage</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
title: e.title </span>||<span style="color: rgba(0, 0, 0, 1)"> S,
desc: e.desc </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
link: e.link </span>||<span style="color: rgba(0, 0, 0, 1)"> location.href,
img_url: e.imgUrl </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
type: e.type </span>|| <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">link</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
data_url: e.dataUrl </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
}, e)
}
}, e)
}, onMenuShareQQ: function (e) {
t(h.onMenuShareQQ, {
complete: function () {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">shareQQ</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
title: e.title </span>||<span style="color: rgba(0, 0, 0, 1)"> S,
desc: e.desc </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
img_url: e.imgUrl </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
link: e.link </span>||<span style="color: rgba(0, 0, 0, 1)"> location.href
}, e)
}
}, e)
}, onMenuShareWeibo: function (e) {
t(h.onMenuShareWeibo, {
complete: function () {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">shareWeiboApp</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
title: e.title </span>||<span style="color: rgba(0, 0, 0, 1)"> S,
desc: e.desc </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
img_url: e.imgUrl </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
link: e.link </span>||<span style="color: rgba(0, 0, 0, 1)"> location.href
}, e)
}
}, e)
}, onMenuShareQZone: function (e) {
t(h.onMenuShareQZone, {
complete: function () {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">shareQZone</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
title: e.title </span>||<span style="color: rgba(0, 0, 0, 1)"> S,
desc: e.desc </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
img_url: e.imgUrl </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
link: e.link </span>||<span style="color: rgba(0, 0, 0, 1)"> location.href
}, e)
}
}, e)
}, startRecord: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">startRecord</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {}, e)
}, stopRecord: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">stopRecord</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {}, e)
}, onVoiceRecordEnd: function (e) {
t(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">onVoiceRecordEnd</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, e)
}, playVoice: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">playVoice</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {localId: e.localId}, e)
}, pauseVoice: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pauseVoice</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {localId: e.localId}, e)
}, stopVoice: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">stopVoice</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {localId: e.localId}, e)
}, onVoicePlayEnd: function (e) {
t(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">onVoicePlayEnd</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, e)
}, uploadVoice: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">uploadVoice</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {localId: e.localId, isShowProgressTips: <span style="color: rgba(128, 0, 128, 1)">0</span> == e.isShowProgressTips ? <span style="color: rgba(128, 0, 128, 1)">0</span> : <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">}, e)
}, downloadVoice: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">downloadVoice</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {serverId: e.serverId, isShowProgressTips: <span style="color: rgba(128, 0, 128, 1)">0</span> == e.isShowProgressTips ? <span style="color: rgba(128, 0, 128, 1)">0</span> : <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">}, e)
}, translateVoice: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">translateVoice</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {localId: e.localId, isShowProgressTips: <span style="color: rgba(128, 0, 128, 1)">0</span> == e.isShowProgressTips ? <span style="color: rgba(128, 0, 128, 1)">0</span> : <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">}, e)
}, chooseImage: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">chooseImage</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
scene: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1|2</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
count: e.count </span>|| <span style="color: rgba(128, 0, 128, 1)">9</span><span style="color: rgba(0, 0, 0, 1)">,
sizeType: e.sizeType </span>|| [<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">original</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">compressed</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">],
sourceType: e.sourceType </span>|| [<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">album</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">camera</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
}, (e._complete </span>=<span style="color: rgba(0, 0, 0, 1)"> function (e) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (M) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> n =<span style="color: rgba(0, 0, 0, 1)"> e.localIds;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
n </span>&& (e.localIds =<span style="color: rgba(0, 0, 0, 1)"> JSON.parse(n))
} </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (e) {
}
}
}, e))
}, getLocation: function (e) {
}, previewImage: function (e) {
i(h.previewImage, {current: e.current, urls: e.urls}, e)
}, uploadImage: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">uploadImage</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {localId: e.localId, isShowProgressTips: <span style="color: rgba(128, 0, 128, 1)">0</span> == e.isShowProgressTips ? <span style="color: rgba(128, 0, 128, 1)">0</span> : <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">}, e)
}, downloadImage: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">downloadImage</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {serverId: e.serverId, isShowProgressTips: <span style="color: rgba(128, 0, 128, 1)">0</span> == e.isShowProgressTips ? <span style="color: rgba(128, 0, 128, 1)">0</span> : <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">}, e)
}, getLocalImgData: function (e) {
</span>!<span style="color: rgba(128, 0, 128, 1)">1</span> === O ? (O = !<span style="color: rgba(128, 0, 128, 1)">0</span>, i(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">getLocalImgData</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {localId: e.localId}, (e._complete =<span style="color: rgba(0, 0, 0, 1)"> function (e) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (O = !<span style="color: rgba(128, 0, 128, 1)">1</span>, E.length > <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> n =<span style="color: rgba(0, 0, 0, 1)"> E.shift();
wx.getLocalImgData(n)
}
}, e))) : E.push(e)
}, getNetworkType: function (e) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> n =<span style="color: rgba(0, 0, 0, 1)"> function (e) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> n =<span style="color: rgba(0, 0, 0, 1)"> e.errMsg;
e.errMsg </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">getNetworkType:ok</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">var</span> i =<span style="color: rgba(0, 0, 0, 1)"> e.subtype;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (delete e.subtype, i) e.networkType = i; <span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> t = n.indexOf(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">:</span><span style="color: rgba(128, 0, 0, 1)">"</span>), o = n.substring(t + <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">switch</span><span style="color: rgba(0, 0, 0, 1)"> (o) {
</span><span style="color: rgba(0, 0, 255, 1)">case</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wifi</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:
</span><span style="color: rgba(0, 0, 255, 1)">case</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">edge</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:
</span><span style="color: rgba(0, 0, 255, 1)">case</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wwan</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:
e.networkType </span>=<span style="color: rgba(0, 0, 0, 1)"> o;
</span><span style="color: rgba(0, 0, 255, 1)">break</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)">:
e.errMsg </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">getNetworkType:fail</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
}
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> e
};
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">getNetworkType</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {}, (e._complete =<span style="color: rgba(0, 0, 0, 1)"> function (e) {
e </span>=<span style="color: rgba(0, 0, 0, 1)"> n(e)
}, e))
}, openLocation: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">openLocation</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
latitude: e.latitude,
longitude: e.longitude,
name: e.name </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
address: e.address </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
scale: e.scale </span>|| <span style="color: rgba(128, 0, 128, 1)">28</span><span style="color: rgba(0, 0, 0, 1)">,
infoUrl: e.infoUrl </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
}, e)
}, getLocation: function (e) {
e </span>= e || {}, i(h.getLocation, {type: e.type || <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wgs84</span><span style="color: rgba(128, 0, 0, 1)">"</span>}, (e._complete =<span style="color: rgba(0, 0, 0, 1)"> function (e) {
delete e.type
}, e))
}, hideOptionMenu: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hideOptionMenu</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {}, e)
}, showOptionMenu: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">showOptionMenu</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {}, e)
}, closeWindow: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">closeWindow</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {}, e = e ||<span style="color: rgba(0, 0, 0, 1)"> {})
}, hideMenuItems: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hideMenuItems</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {menuList: e.menuList}, e)
}, showMenuItems: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">showMenuItems</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {menuList: e.menuList}, e)
}, hideAllNonBaseMenuItem: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hideAllNonBaseMenuItem</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {}, e)
}, showAllNonBaseMenuItem: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">showAllNonBaseMenuItem</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {}, e)
}, scanQRCode: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">scanQRCode</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
needResult: (e </span>= e || {}).needResult || <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">,
scanType: e.scanType </span>|| [<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">qrCode</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">barCode</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
}, (e._complete </span>=<span style="color: rgba(0, 0, 0, 1)"> function (e) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (P) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> n =<span style="color: rgba(0, 0, 0, 1)"> e.resultStr;
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (n) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> i =<span style="color: rgba(0, 0, 0, 1)"> JSON.parse(n);
e.resultStr </span>= i && i.scan_code &&<span style="color: rgba(0, 0, 0, 1)"> i.scan_code.scan_result
}
}
}, e))
}, openAddress: function (e) {
i(h.openAddress, {}, (e._complete </span>=<span style="color: rgba(0, 0, 0, 1)"> function (e) {
e </span>=<span style="color: rgba(0, 0, 0, 1)"> a(e)
}, e))
}, openProductSpecificView: function (e) {
i(h.openProductSpecificView, {pid: e.productId, view_type: e.viewType </span>|| <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">, ext_info: e.extInfo}, e)
}, addCard: function (e) {
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">var</span> n = e.cardList, t = [], o = <span style="color: rgba(128, 0, 128, 1)">0</span>, r = n.length; o < r; ++<span style="color: rgba(0, 0, 0, 1)">o) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> a = n, c =<span style="color: rgba(0, 0, 0, 1)"> {card_id: a.cardId, card_ext: a.cardExt};
t.push(c)
}
i(h.addCard, {card_list: t}, (e._complete </span>=<span style="color: rgba(0, 0, 0, 1)"> function (e) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> n =<span style="color: rgba(0, 0, 0, 1)"> e.card_list;
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (n) {
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">var</span> i = <span style="color: rgba(128, 0, 128, 1)">0</span>, t = (n = JSON.parse(n)).length; i < t; ++<span style="color: rgba(0, 0, 0, 1)">i) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> o =<span style="color: rgba(0, 0, 0, 1)"> n;
o.cardId </span>= o.card_id, o.cardExt = o.card_ext, o.isSuccess = !!<span style="color: rgba(0, 0, 0, 1)">o.is_succ, delete o.card_id, delete o.card_ext, delete o.is_succ
}
e.cardList </span>=<span style="color: rgba(0, 0, 0, 1)"> n, delete e.card_list
}
}, e))
}, chooseCard: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">chooseCard</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
app_id: C.appId,
location_id: e.shopId </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
sign_type: e.signType </span>|| <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">SHA1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
card_id: e.cardId </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
card_type: e.cardType </span>|| <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
card_sign: e.cardSign,
time_stamp: e.timestamp </span>+ <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
nonce_str: e.nonceStr
}, (e._complete </span>=<span style="color: rgba(0, 0, 0, 1)"> function (e) {
e.cardList </span>=<span style="color: rgba(0, 0, 0, 1)"> e.choose_card_info, delete e.choose_card_info
}, e))
}, openCard: function (e) {
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">var</span> n = e.cardList, t = [], o = <span style="color: rgba(128, 0, 128, 1)">0</span>, r = n.length; o < r; ++<span style="color: rgba(0, 0, 0, 1)">o) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> a = n, c =<span style="color: rgba(0, 0, 0, 1)"> {card_id: a.cardId, code: a.code};
t.push(c)
}
i(h.openCard, {card_list: t}, e)
}, consumeAndShareCard: function (e) {
i(h.consumeAndShareCard, {consumedCardId: e.cardId, consumedCode: e.code}, e)
}, chooseWXPay: function (e) {
i(h.chooseWXPay, r(e), e)
}, openEnterpriseRedPacket: function (e) {
i(h.openEnterpriseRedPacket, r(e), e)
}, startSearchBeacons: function (e) {
i(h.startSearchBeacons, {ticket: e.ticket}, e)
}, stopSearchBeacons: function (e) {
i(h.stopSearchBeacons, {}, e)
}, onSearchBeacons: function (e) {
t(h.onSearchBeacons, e)
}, openEnterpriseChat: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">openEnterpriseChat</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {useridlist: e.userIds, chatname: e.groupName}, e)
}, launchMiniProgram: function (e) {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">launchMiniProgram</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {targetAppId: e.targetAppId, path: g(e.path), envVersion: e.envVersion}, e)
}, miniProgram: {
navigateBack: function (e) {
e </span>= e ||<span style="color: rgba(0, 0, 0, 1)"> {}, f(function () {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">invokeMiniProgramAPI</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {name: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">navigateBack</span><span style="color: rgba(128, 0, 0, 1)">"</span>, arg: {delta: e.delta || <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">}}, e)
})
}, navigateTo: function (e) {
f(function () {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">invokeMiniProgramAPI</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {name: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">navigateTo</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, arg: {url: e.url}}, e)
})
}, redirectTo: function (e) {
f(function () {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">invokeMiniProgramAPI</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {name: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">redirectTo</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, arg: {url: e.url}}, e)
})
}, switchTab: function (e) {
f(function () {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">invokeMiniProgramAPI</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {name: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">switchTab</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, arg: {url: e.url}}, e)
})
}, reLaunch: function (e) {
f(function () {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">invokeMiniProgramAPI</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {name: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">reLaunch</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, arg: {url: e.url}}, e)
})
}, postMessage: function (e) {
f(function () {
i(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">invokeMiniProgramAPI</span><span style="color: rgba(128, 0, 0, 1)">"</span>, {name: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">postMessage</span><span style="color: rgba(128, 0, 0, 1)">"</span>, arg: e.data ||<span style="color: rgba(0, 0, 0, 1)"> {}}, e)
})
}, getEnv: function (n) {
f(function () {
n({miniprogram: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">miniprogram</span><span style="color: rgba(128, 0, 0, 1)">"</span> ===<span style="color: rgba(0, 0, 0, 1)"> e.__wxjs_environment})
})
}
}
}, b </span>= <span style="color: rgba(128, 0, 128, 1)">1</span>, R =<span style="color: rgba(0, 0, 0, 1)"> {};
</span><span style="color: rgba(0, 0, 255, 1)">return</span> I.addEventListener(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">error</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, function (e) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 0, 1)">M) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> n = e.target, i = n.tagName, t =<span style="color: rgba(0, 0, 0, 1)"> n.src;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> ((<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">IMG</span><span style="color: rgba(128, 0, 0, 1)">"</span> == i || <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">VIDEO</span><span style="color: rgba(128, 0, 0, 1)">"</span> == i || <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">AUDIO</span><span style="color: rgba(128, 0, 0, 1)">"</span> == i || <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">SOURCE</span><span style="color: rgba(128, 0, 0, 1)">"</span> == i) && -<span style="color: rgba(128, 0, 128, 1)">1</span> != t.indexOf(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wxlocalresource://</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)) {
e.preventDefault(), e.stopPropagation();
</span><span style="color: rgba(0, 0, 255, 1)">var</span> o = n[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wx-id</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">];
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (o || (o = b++, n[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wx-id</span><span style="color: rgba(128, 0, 0, 1)">"</span>] = o), R) <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
R </span>= !<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">, wx.ready(function () {
wx.getLocalImgData({
localId: t, success: function (e) {
n.src </span>=<span style="color: rgba(0, 0, 0, 1)"> e.localData
}
})
})
}
}
}, </span>!<span style="color: rgba(128, 0, 128, 1)">0</span>), I.addEventListener(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">load</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, function (e) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 0, 1)">M) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> n = e.target, i =<span style="color: rgba(0, 0, 0, 1)"> n.tagName;
n.src;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">IMG</span><span style="color: rgba(128, 0, 0, 1)">"</span> == i || <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">VIDEO</span><span style="color: rgba(128, 0, 0, 1)">"</span> == i || <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">AUDIO</span><span style="color: rgba(128, 0, 0, 1)">"</span> == i || <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">SOURCE</span><span style="color: rgba(128, 0, 0, 1)">"</span> ==<span style="color: rgba(0, 0, 0, 1)"> i) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> t = n[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wx-id</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">];
t </span>&& (R = !<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">)
}
}
}, </span>!<span style="color: rgba(128, 0, 128, 1)">0</span>), n && (e.wx = e.jWeixin =<span style="color: rgba(0, 0, 0, 1)"> N), N
}
});</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p> </p>
<p>那么问题来了,怎么调用呢?</p>
<p>新建一个js 文件 ,封装一个方法,【这样有利于做其他逻辑处理】</p>
<p><img alt="" data-src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516182012758-665531553.png"></p>
<p> </p>
<p> </p>
<p>那么问题又来了,既然是网页,不仅浏览器可以使用,其他应用也可以使用,那么如何区别是不是微信小程序进来呢?</p>
<p>这个好办,在进入外链的时候,网址参数加入可以识别的标志或参数,如</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516182527461-887847465.png"></p>
<p> </p>
<p> 在进入的页面对网址做一个检查,如果包含该字符串,则在cookie标记为由微信小程序进来的</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516182720711-2101686820.png"></p>
<p> </p>
<p> 到了敏感页面。即按历史返回键需要回到小程序的页面时,需要对页面返回键做一个判断操作,</p>
<p>我之所以这样写,是因为需求是小程序可以在这个页面后退触发返回小程序操作,如果不是小程序【比如浏览器、app内置浏览器等】,则不允许返回操作,防止页面后退才这样写</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516182903371-1062092389.png"></p>
<p> </p>
<p> 因为无法显示视频,动态图我又懒得做,所以就不展示测试页面了</p>
<p> </p>
<h1>11.总结</h1>
<p>其实这微信小程序仍然是类似于应用app开发,可以全部使用app原生组件或微信的一套语言开发,用前后端分离模式开发;</p>
<p>也可以使用浏览器容器,由外链进入网站,形成一个app壳+Web开发的一个模式,好处就是开发简单,内容丰富,同时配合微信提供的接口可以调用手机权限,又不影响浏览器对网站的访问,算是一个引流的作用了!!!</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>-------------------------------------------------</p>
<p>参考博文原址:</p>
<p>https://zhidao.baidu.com/question/1801861578486509987.html</p>
<p>https://www.jianshu.com/p/244fcc9de68f</p>
<p>https://blog.csdn.net/Say_one/article/details/88352599</p>
<p>https://honker.blog.csdn.net/article/details/105498670</p>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
<p>本文来自博客园,作者:岑惜,转载请注明原文链接:https://www.cnblogs.com/c2g5201314/p/12900470.html</p>
<p>响应开源精神相互学习,内容良币驱除劣币</p><br><br>
来源:https://www.cnblogs.com/c2g5201314/p/12900470.html
頁:
[1]