风大不出门 發表於 2020-5-16 18:37:00

微信小程序开发 --- 小白之路 --- 心得

<h1>1.前言</h1>
<p>今天 ,发现我的饭卡不见了。。。。悲催 ,看了一下学校的微信小程序,查了下我这饭卡的流水记录,嗯。。。最后出现的地方在洗澡房。。。</p>
<p>好吧,扯远了,虽然没找到,可是突发奇想 ,小程序挺方便的,我能不能做一个?</p>
<p>。。。。。</p>
<p>事实上,充钱就行!!!</p>
<p>百度搜了一下关于微信小程序的开发教程。。。显示的基本上是广告,都是小程序外包。。。我有钱还自己开发?笑话!!!贫穷使我自力更生!!!</p>
<p>。。。。。</p>
<p>直接去博客找资料,总有那么几个前辈把路给我们铺好了,只是有些是桥,有些是泥巴路,喀喀喀,总比没有好。</p>
<p>&nbsp;</p>
<p>这位前辈 详细介绍了微信小程序能干什么&nbsp; ,博文原址&nbsp; : &nbsp;https://www.cnblogs.com/jingwhale/p/11255805.html</p>
<p>&nbsp;</p>
<p>。。。。<span style="color: rgba(255, 102, 0, 1); font-size: 18pt">反正一开始我看的是一脸懵逼</span>。。。。</p>
<h1>2.话不多说,看看效果</h1>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516150638420-217145644.png"> &nbsp;&nbsp;</p>
<p>我做的小程序名字叫岑惜 &nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516150830617-110051642.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>跳转进入登录页</p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516150948276-715173998.png"></p>
<p>&nbsp;</p>
<p>&nbsp;好了。。。其他就不展示了 ,其实想要做这个小程序,其实蛮简单的 ,说到底还是需要成本的,因为访问外链的话 ,是需要去微信公众平台 认证域名 ,还有要有 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>&nbsp;3.开发者权限认证</h1>
<p>需要登录微信公众号平台,网址&nbsp; :&nbsp; https://mp.weixin.qq.com/</p>
<p>需要先注册</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516152950612-1060104214.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516153021687-1396902252.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>填写信息,跟着一步一步来就可以了 ,邮箱可以使用qq邮箱</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516153036297-2022009115.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;注册好了之后,返回主页,可以 用微信扫描登录</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516153226864-734240987.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>登陆后的页面,进入主页,</p>
<p>菜单栏找到设置,填写信息</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516153509321-970023275.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>记住你的小程序id ,这很重要 ,在开发者工具里面需要认证的</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516153728099-1129359306.png"></p>
<p>&nbsp;</p>
<p>&nbsp;现在去获取开发者权限</p>
<p>菜单找到 &nbsp; 开发</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516153942664-950105704.png"></p>
<p>&nbsp;</p>
<p>&nbsp;设置开发者id ,上传密码、服务器域名信息 ,</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516154101752-238604042.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>基本的设置差不多了,还有其他设置自己琢磨,我就不演示了,</p>
<h1>3.下载开发者工具</h1>
<p>网址 :&nbsp;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>&nbsp;</p>
<p>&nbsp;</p>
<p>下载后安装,傻瓜式一键安装 ,安装完开启,直接就是微信扫码界面了</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516154527848-1642666552.png"></p>
<p>&nbsp;</p>
<h1>&nbsp;</h1>
<h1>4.新建小程序工程</h1>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516154634481-1735102725.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516154825096-1589963753.png"></p>
<p>&nbsp;</p>
<p>&nbsp;信息填写好,点击新建,然后等待加载开发页面 ,看起来有点像浏览器,其实更像android开发工具</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516154950408-681527308.png"></p>
<p>&nbsp;</p>
<p>&nbsp;我应该做个目录说明</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516155919044-1412721945.png"></p>
<p>&nbsp;</p>
<p>&nbsp;有个 login和chi文件夹 ,那是我自己建的页面,</p>
<p>每个页面的文件应该都放在一个文件夹里,这样不会乱</p>
<p>,就像这样</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516160050781-1722714350.png"></p>
<p>&nbsp;</p>
<h1>5.新建页面</h1>
<p>&nbsp;那么问题来了 ,怎么创建新页面?</p>
<p>在pages文件夹 右键,新建文件夹 ,</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516160406552-2084373469.png"></p>
<p>&nbsp;</p>
<p>&nbsp;我新建了一个叫 newPage的文件夹</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516160459661-553575144.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;右键这文件夹,选择新建 Page</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516160611811-1366446552.png"></p>
<p>&nbsp;</p>
<p>&nbsp;填写名字,最好是与文件夹名字一致,回车确定</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516160713755-2029315962.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516160834292-150770001.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h1>6.修改小程序标题</h1>
<p>&nbsp;</p>
<p>需要去全局变量才能修改标题&nbsp; ,所有的页面都写着pages里面,一般会自动添加,但是不会自动删除,需要手动修改,不然报错无法运行</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516161855476-360810504.png"></p>
<p>&nbsp;</p>
<h1>&nbsp;7.跳到下一页</h1>
<p>如何进入下一页?需要 在js文件控制页面跳转 ,使用 vue.js一样的语法 ,控制 页面组件</p>
<p>我这里做一个 点击 文字 “欢迎进入岑惜随笔” 就会进入下一页面&nbsp; 【当然,也可以做一个计时器 自动跳转页面】</p>
<p>先看看 js怎么写 【这是默认的初始页,对应的页面名是 index】</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516162508546-665150200.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>自定义做了个方法&nbsp; toLogin&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516162704181-918314751.png"></p>
<p>&nbsp;</p>
<p>&nbsp;现在需要去wxml文件绑定触发组件</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516162813907-638198067.png"></p>
<p>&nbsp;</p>
<p>修改文件后,点击保存</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516171340652-732659301.png"></p>
<p>&nbsp;</p>
<p>&nbsp;打开手机微信后 ,点击真机测试&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516171428496-2130444717.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516171446884-1350412144.png"></p>
<p>&nbsp;</p>
<p>手机授权后,等一会手机就会自动弹出小程序运行啦 ,啦啦啦啦,也可以使用开发工具的小程序页面展示窗口操作,其实那就是一个手机模拟器</p>
<h1>8.跳回指定的上一页</h1>
<p>在微信默认方法&nbsp; onUnload 设置</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516171925076-1920136564.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</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>&nbsp;</p>
<p>&nbsp;网址我写在 js文件里</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516172153720-1678015366.png"></p>
<p>&nbsp;</p>
<p>&nbsp;访问 效果</p>
<p>&nbsp;<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>&nbsp;&lt;script src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"&gt;&lt;/script&gt;</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 &amp;&amp; (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>&amp;&amp; t.trigger &amp;&amp;<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 &amp;&amp; (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 &amp;&amp; (i._complete(n), delete i._complete), t = n.errMsg || <span style="color: rgba(128, 0, 0, 1)">""</span>, C.debug &amp;&amp; !i.isInnerInvoke &amp;&amp;<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>&amp;&amp;<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>&amp;&amp;<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>&amp;&amp;<span style="color: rgba(0, 0, 0, 1)"> i.fail(n)
      }
      i.complete </span>&amp;&amp;<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>&amp;&amp; (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>)) &amp;&amp; (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 &amp;&amp; (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>) &amp;&amp; (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>) &amp;&amp; (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()) &amp;&amp; <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 &amp;&amp; <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 &amp;&amp; (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 &amp;&amp; (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 &lt; 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>&amp;&amp; (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 &amp;&amp;<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>&amp;&amp; (e = i), n &amp;&amp; n._complete &amp;&amp; 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 &lt; <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 &lt; <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)">&amp;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)">&amp;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)">&amp;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)">&amp;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)">&amp;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)">&amp;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)">&amp;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)">&amp;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>&amp;&amp; (e.WeixinJSBridge ? n() : I.addEventListener &amp;&amp; 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>&amp;&amp;<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>&amp;&amp;<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 &amp;&amp; e.length &gt; <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>) &amp;&amp; !_.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 &lt; 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 &lt; 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 &amp;&amp; C.debug &amp;&amp;<span style="color: rgba(0, 0, 0, 1)"> e())
            }, error: function (e) {
                x </span>&lt; <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>&amp;&amp; (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>&amp;&amp; (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>&amp;&amp; (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 &gt; <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 &amp;&amp; i.scan_code &amp;&amp;<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 &lt; 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 &lt; 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 &lt; 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) &amp;&amp; -<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>&amp;&amp; (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 &amp;&amp; (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>&nbsp;</p>
<p>那么问题来了,怎么调用呢?</p>
<p>新建一个js 文件 ,封装一个方法,【这样有利于做其他逻辑处理】</p>
<p><img alt="" data-src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516182012758-665531553.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>那么问题又来了,既然是网页,不仅浏览器可以使用,其他应用也可以使用,那么如何区别是不是微信小程序进来呢?</p>
<p>这个好办,在进入外链的时候,网址参数加入可以识别的标志或参数,如</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516182527461-887847465.png"></p>
<p>&nbsp;</p>
<p>&nbsp;在进入的页面对网址做一个检查,如果包含该字符串,则在cookie标记为由微信小程序进来的</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516182720711-2101686820.png"></p>
<p>&nbsp;</p>
<p>&nbsp;到了敏感页面。即按历史返回键需要回到小程序的页面时,需要对页面返回键做一个判断操作,</p>
<p>我之所以这样写,是因为需求是小程序可以在这个页面后退触发返回小程序操作,如果不是小程序【比如浏览器、app内置浏览器等】,则不允许返回操作,防止页面后退才这样写</p>
<p><img src="https://img2020.cnblogs.com/blog/1620438/202005/1620438-20200516182903371-1062092389.png"></p>
<p>&nbsp;</p>
<p>&nbsp;因为无法显示视频,动态图我又懒得做,所以就不展示测试页面了</p>
<p>&nbsp;</p>
<h1>11.总结</h1>
<p>其实这微信小程序仍然是类似于应用app开发,可以全部使用app原生组件或微信的一套语言开发,用前后端分离模式开发;</p>
<p>也可以使用浏览器容器,由外链进入网站,形成一个app壳+Web开发的一个模式,好处就是开发简单,内容丰富,同时配合微信提供的接口可以调用手机权限,又不影响浏览器对网站的访问,算是一个引流的作用了!!!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</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>&nbsp;</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]
查看完整版本: 微信小程序开发 --- 小白之路 --- 心得