{"id":564,"date":"2015-05-21T14:32:31","date_gmt":"2015-05-21T06:32:31","guid":{"rendered":"http:\/\/www.zyuns.com\/?p=564"},"modified":"2015-05-21T14:32:31","modified_gmt":"2015-05-21T06:32:31","slug":"%e5%be%ae%e4%bf%a1%e5%88%86%e4%ba%abjs%e4%bb%a3%e7%a0%81-weixinapi-js","status":"publish","type":"post","link":"https:\/\/www.siediyer.cn\/?p=564","title":{"rendered":"\u5fae\u4fe1\u5206\u4eabJS\u4ee3\u7801 WeixinApi.js"},"content":{"rendered":"<pre class=\"lang:default decode:true \">\/**!\r\n * \u5fae\u4fe1\u5185\u7f6e\u6d4f\u89c8\u5668\u7684Javascript API\uff0c\u529f\u80fd\u5305\u62ec\uff1a\r\n *\r\n * 1\u3001\u5206\u4eab\u5230\u5fae\u4fe1\u670b\u53cb\u5708\r\n * 2\u3001\u5206\u4eab\u7ed9\u5fae\u4fe1\u597d\u53cb\r\n * 3\u3001\u5206\u4eab\u5230\u817e\u8baf\u5fae\u535a\r\n * 4\u3001\u65b0\u7684\u5206\u4eab\u63a5\u53e3\uff0c\u5305\u542b\u670b\u53cb\u5708\u3001\u597d\u53cb\u3001\u5fae\u535a\u7684\u5206\u4eab\uff08for iOS\uff09\r\n * 5\u3001\u9690\u85cf\/\u663e\u793a\u53f3\u4e0a\u89d2\u7684\u83dc\u5355\u5165\u53e3\r\n * 6\u3001\u9690\u85cf\/\u663e\u793a\u5e95\u90e8\u6d4f\u89c8\u5668\u5de5\u5177\u680f\r\n * 7\u3001\u83b7\u53d6\u5f53\u524d\u7684\u7f51\u7edc\u72b6\u6001\r\n * 8\u3001\u8c03\u8d77\u5fae\u4fe1\u5ba2\u6237\u7aef\u7684\u56fe\u7247\u64ad\u653e\u7ec4\u4ef6\r\n * 9\u3001\u5173\u95ed\u516c\u4f17\u5e73\u53f0Web\u9875\u9762\r\n *\r\n * @author zhaoxianlie(http:\/\/www.baidufe.com)\r\n *\/\r\nvar WeixinApi = (function () {\r\n\r\n    \"use strict\";\r\n\r\n    \/**\r\n     * \u5206\u4eab\u5230\u5fae\u4fe1\u670b\u53cb\u5708\r\n     * @param       {Object}    data       \u5f85\u5206\u4eab\u7684\u4fe1\u606f\r\n     * @p-config    {String}    appId      \u516c\u4f17\u5e73\u53f0\u7684appId\uff08\u670d\u52a1\u53f7\u53ef\u7528\uff09\r\n     * @p-config    {String}    imgUrl     \u56fe\u7247\u5730\u5740\r\n     * @p-config    {String}    link       \u94fe\u63a5\u5730\u5740\r\n     * @p-config    {String}    desc       \u63cf\u8ff0\r\n     * @p-config    {String}    title      \u5206\u4eab\u7684\u6807\u9898\r\n     *\r\n     * @param       {Object}    callbacks  \u76f8\u5173\u56de\u8c03\u65b9\u6cd5\r\n     * @p-config    {Boolean}   async                   ready\u65b9\u6cd5\u662f\u5426\u9700\u8981\u5f02\u6b65\u6267\u884c\uff0c\u9ed8\u8ba4false\r\n     * @p-config    {Function}  ready(argv)             \u5c31\u7eea\u72b6\u6001\r\n     * @p-config    {Function}  dataLoaded(data)        \u6570\u636e\u52a0\u8f7d\u5b8c\u6210\u540e\u8c03\u7528\uff0casync\u4e3atrue\u65f6\u6709\u7528\uff0c\u4e5f\u53ef\u4ee5\u4e3a\u7a7a\r\n     * @p-config    {Function}  cancel(resp)    \u53d6\u6d88\r\n     * @p-config    {Function}  fail(resp)      \u5931\u8d25\r\n     * @p-config    {Function}  confirm(resp)   \u6210\u529f\r\n     * @p-config    {Function}  all(resp)       \u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\u7684\u56de\u8c03\r\n     *\/\r\n    function weixinShareTimeline(data, callbacks) {\r\n        callbacks = callbacks || {};\r\n        var shareTimeline = function (theData) {\r\n            WeixinJSBridge.invoke('shareTimeline', {\r\n                \"appid\":theData.appId ? theData.appId : '',\r\n                \"img_url\":theData.imgUrl,\r\n                \"link\":theData.link,\r\n                \"desc\":theData.title,\r\n                \"title\":theData.desc, \/\/ \u6ce8\u610f\u8fd9\u91cc\u8981\u5206\u4eab\u51fa\u53bb\u7684\u5185\u5bb9\u662fdesc\r\n                \"img_width\":\"640\",\r\n                \"img_height\":\"640\"\r\n            }, function (resp) {\r\n                switch (resp.err_msg) {\r\n                    \/\/ share_timeline:cancel \u7528\u6237\u53d6\u6d88\r\n                    case 'share_timeline:cancel':\r\n                        callbacks.cancel &amp;&amp; callbacks.cancel(resp);\r\n                        break;\r\n                    \/\/ share_timeline:confirm \u53d1\u9001\u6210\u529f\r\n                    case 'share_timeline:confirm':\r\n                    case 'share_timeline:ok':\r\n                        callbacks.confirm &amp;&amp; callbacks.confirm(resp);\r\n                        break;\r\n                    \/\/ share_timeline:fail\u3000\u53d1\u9001\u5931\u8d25\r\n                    case 'share_timeline:fail':\r\n                    default:\r\n                        callbacks.fail &amp;&amp; callbacks.fail(resp);\r\n                        break;\r\n                }\r\n                \/\/ \u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\u7684\u56de\u8c03\r\n                callbacks.all &amp;&amp; callbacks.all(resp);\r\n            });\r\n        };\r\n        WeixinJSBridge.on('menu:share:timeline', function (argv) {\r\n            if (callbacks.async &amp;&amp; callbacks.ready) {\r\n                window[\"_wx_loadedCb_\"] = callbacks.dataLoaded || new Function();\r\n                if(window[\"_wx_loadedCb_\"].toString().indexOf(\"_wx_loadedCb_\") &gt; 0) {\r\n                    window[\"_wx_loadedCb_\"] = new Function();\r\n                }\r\n                callbacks.dataLoaded = function (newData) {\r\n                    window[\"_wx_loadedCb_\"](newData);\r\n                    shareTimeline(newData);\r\n                };\r\n                \/\/ \u7136\u540e\u5c31\u7eea\r\n                callbacks.ready &amp;&amp; callbacks.ready(argv);\r\n            } else {\r\n                \/\/ \u5c31\u7eea\u72b6\u6001\r\n                callbacks.ready &amp;&amp; callbacks.ready(argv);\r\n                shareTimeline(data);\r\n            }\r\n        });\r\n    }\r\n\r\n    \/**\r\n     * \u53d1\u9001\u7ed9\u5fae\u4fe1\u4e0a\u7684\u597d\u53cb\r\n     * @param       {Object}    data       \u5f85\u5206\u4eab\u7684\u4fe1\u606f\r\n     * @p-config    {String}    appId      \u516c\u4f17\u5e73\u53f0\u7684appId\uff08\u670d\u52a1\u53f7\u53ef\u7528\uff09\r\n     * @p-config    {String}    imgUrl     \u56fe\u7247\u5730\u5740\r\n     * @p-config    {String}    link       \u94fe\u63a5\u5730\u5740\r\n     * @p-config    {String}    desc       \u63cf\u8ff0\r\n     * @p-config    {String}    title      \u5206\u4eab\u7684\u6807\u9898\r\n     *\r\n     * @param       {Object}    callbacks  \u76f8\u5173\u56de\u8c03\u65b9\u6cd5\r\n     * @p-config    {Boolean}   async                   ready\u65b9\u6cd5\u662f\u5426\u9700\u8981\u5f02\u6b65\u6267\u884c\uff0c\u9ed8\u8ba4false\r\n     * @p-config    {Function}  ready(argv)             \u5c31\u7eea\u72b6\u6001\r\n     * @p-config    {Function}  dataLoaded(data)        \u6570\u636e\u52a0\u8f7d\u5b8c\u6210\u540e\u8c03\u7528\uff0casync\u4e3atrue\u65f6\u6709\u7528\uff0c\u4e5f\u53ef\u4ee5\u4e3a\u7a7a\r\n     * @p-config    {Function}  cancel(resp)    \u53d6\u6d88\r\n     * @p-config    {Function}  fail(resp)      \u5931\u8d25\r\n     * @p-config    {Function}  confirm(resp)   \u6210\u529f\r\n     * @p-config    {Function}  all(resp)       \u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\u7684\u56de\u8c03\r\n     *\/\r\n    function weixinSendAppMessage(data, callbacks) {\r\n        callbacks = callbacks || {};\r\n        var sendAppMessage = function (theData) {\r\n            WeixinJSBridge.invoke('sendAppMessage', {\r\n                \"appid\":theData.appId ? theData.appId : '',\r\n                \"img_url\":theData.imgUrl,\r\n                \"link\":theData.link,\r\n                \"desc\":theData.desc,\r\n                \"title\":theData.title,\r\n                \"img_width\":\"640\",\r\n                \"img_height\":\"640\"\r\n            }, function (resp) {\r\n                switch (resp.err_msg) {\r\n                    \/\/ send_app_msg:cancel \u7528\u6237\u53d6\u6d88\r\n                    case 'send_app_msg:cancel':\r\n                        callbacks.cancel &amp;&amp; callbacks.cancel(resp);\r\n                        break;\r\n                    \/\/ send_app_msg:confirm \u53d1\u9001\u6210\u529f\r\n                    case 'send_app_msg:confirm':\r\n                    case 'send_app_msg:ok':\r\n                        callbacks.confirm &amp;&amp; callbacks.confirm(resp);\r\n                        break;\r\n                    \/\/ send_app_msg:fail\u3000\u53d1\u9001\u5931\u8d25\r\n                    case 'send_app_msg:fail':\r\n                    default:\r\n                        callbacks.fail &amp;&amp; callbacks.fail(resp);\r\n                        break;\r\n                }\r\n                \/\/ \u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\u7684\u56de\u8c03\r\n                callbacks.all &amp;&amp; callbacks.all(resp);\r\n            });\r\n        };\r\n        WeixinJSBridge.on('menu:share:appmessage', function (argv) {\r\n            if (callbacks.async &amp;&amp; callbacks.ready) {\r\n                window[\"_wx_loadedCb_\"] = callbacks.dataLoaded || new Function();\r\n                if(window[\"_wx_loadedCb_\"].toString().indexOf(\"_wx_loadedCb_\") &gt; 0) {\r\n                    window[\"_wx_loadedCb_\"] = new Function();\r\n                }\r\n                callbacks.dataLoaded = function (newData) {\r\n                    window[\"_wx_loadedCb_\"](newData);\r\n                    sendAppMessage(newData);\r\n                };\r\n                \/\/ \u7136\u540e\u5c31\u7eea\r\n                callbacks.ready &amp;&amp; callbacks.ready(argv);\r\n            } else {\r\n                \/\/ \u5c31\u7eea\u72b6\u6001\r\n                callbacks.ready &amp;&amp; callbacks.ready(argv);\r\n                sendAppMessage(data);\r\n            }\r\n        });\r\n    }\r\n\r\n    \/**\r\n     * \u5206\u4eab\u5230\u817e\u8baf\u5fae\u535a\r\n     * @param       {Object}    data       \u5f85\u5206\u4eab\u7684\u4fe1\u606f\r\n     * @p-config    {String}    link       \u94fe\u63a5\u5730\u5740\r\n     * @p-config    {String}    desc       \u63cf\u8ff0\r\n     *\r\n     * @param       {Object}    callbacks  \u76f8\u5173\u56de\u8c03\u65b9\u6cd5\r\n     * @p-config    {Boolean}   async                   ready\u65b9\u6cd5\u662f\u5426\u9700\u8981\u5f02\u6b65\u6267\u884c\uff0c\u9ed8\u8ba4false\r\n     * @p-config    {Function}  ready(argv)             \u5c31\u7eea\u72b6\u6001\r\n     * @p-config    {Function}  dataLoaded(data)        \u6570\u636e\u52a0\u8f7d\u5b8c\u6210\u540e\u8c03\u7528\uff0casync\u4e3atrue\u65f6\u6709\u7528\uff0c\u4e5f\u53ef\u4ee5\u4e3a\u7a7a\r\n     * @p-config    {Function}  cancel(resp)    \u53d6\u6d88\r\n     * @p-config    {Function}  fail(resp)      \u5931\u8d25\r\n     * @p-config    {Function}  confirm(resp)   \u6210\u529f\r\n     * @p-config    {Function}  all(resp)       \u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\u7684\u56de\u8c03\r\n     *\/\r\n    function weixinShareWeibo(data, callbacks) {\r\n        callbacks = callbacks || {};\r\n        var shareWeibo = function (theData) {\r\n            WeixinJSBridge.invoke('shareWeibo', {\r\n                \"content\":theData.desc,\r\n                \"url\":theData.link\r\n            }, function (resp) {\r\n                switch (resp.err_msg) {\r\n                    \/\/ share_weibo:cancel \u7528\u6237\u53d6\u6d88\r\n                    case 'share_weibo:cancel':\r\n                        callbacks.cancel &amp;&amp; callbacks.cancel(resp);\r\n                        break;\r\n                    \/\/ share_weibo:confirm \u53d1\u9001\u6210\u529f\r\n                    case 'share_weibo:confirm':\r\n                    case 'share_weibo:ok':\r\n                        callbacks.confirm &amp;&amp; callbacks.confirm(resp);\r\n                        break;\r\n                    \/\/ share_weibo:fail\u3000\u53d1\u9001\u5931\u8d25\r\n                    case 'share_weibo:fail':\r\n                    default:\r\n                        callbacks.fail &amp;&amp; callbacks.fail(resp);\r\n                        break;\r\n                }\r\n                \/\/ \u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\u7684\u56de\u8c03\r\n                callbacks.all &amp;&amp; callbacks.all(resp);\r\n            });\r\n        };\r\n        WeixinJSBridge.on('menu:share:weibo', function (argv) {\r\n            if (callbacks.async &amp;&amp; callbacks.ready) {\r\n                window[\"_wx_loadedCb_\"] = callbacks.dataLoaded || new Function();\r\n                if(window[\"_wx_loadedCb_\"].toString().indexOf(\"_wx_loadedCb_\") &gt; 0) {\r\n                    window[\"_wx_loadedCb_\"] = new Function();\r\n                }\r\n                callbacks.dataLoaded = function (newData) {\r\n                    window[\"_wx_loadedCb_\"](newData);\r\n                    shareWeibo(newData);\r\n                };\r\n                \/\/ \u7136\u540e\u5c31\u7eea\r\n                callbacks.ready &amp;&amp; callbacks.ready(argv);\r\n            } else {\r\n                \/\/ \u5c31\u7eea\u72b6\u6001\r\n                callbacks.ready &amp;&amp; callbacks.ready(argv);\r\n                shareWeibo(data);\r\n            }\r\n        });\r\n    }\r\n\r\n\r\n    \/**\r\n     * \u65b0\u7684\u5206\u4eab\u63a5\u53e3\r\n     * @param       {Object}    data       \u5f85\u5206\u4eab\u7684\u4fe1\u606f\r\n     * @p-config    {String}    appId      \u516c\u4f17\u5e73\u53f0\u7684appId\uff08\u670d\u52a1\u53f7\u53ef\u7528\uff09\r\n     * @p-config    {String}    imgUrl     \u56fe\u7247\u5730\u5740\r\n     * @p-config    {String}    link       \u94fe\u63a5\u5730\u5740\r\n     * @p-config    {String}    desc       \u63cf\u8ff0\r\n     * @p-config    {String}    title      \u5206\u4eab\u7684\u6807\u9898\r\n     *\r\n     * @param       {Object}    callbacks  \u76f8\u5173\u56de\u8c03\u65b9\u6cd5\r\n     * @p-config    {Boolean}   async                   ready\u65b9\u6cd5\u662f\u5426\u9700\u8981\u5f02\u6b65\u6267\u884c\uff0c\u9ed8\u8ba4false\r\n     * @p-config    {Function}  ready(argv,shareTo)             \u5c31\u7eea\u72b6\u6001\r\n     * @p-config    {Function}  dataLoaded(data)        \u6570\u636e\u52a0\u8f7d\u5b8c\u6210\u540e\u8c03\u7528\uff0casync\u4e3atrue\u65f6\u6709\u7528\uff0c\u4e5f\u53ef\u4ee5\u4e3a\u7a7a\r\n     * @p-config    {Function}  cancel(resp,shareTo)    \u53d6\u6d88\r\n     * @p-config    {Function}  fail(resp,shareTo)      \u5931\u8d25\r\n     * @p-config    {Function}  confirm(resp,shareTo)   \u6210\u529f\r\n     * @p-config    {Function}  all(resp,shareTo)       \u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\u7684\u56de\u8c03\r\n     *\/\r\n    function weixinGeneralShare(data, callbacks) {\r\n        callbacks = callbacks || {};\r\n        var generalShare = function (general,theData) {\r\n\r\n            \/\/ \u5982\u679c\u662f\u5206\u4eab\u5230\u670b\u53cb\u5708\uff0c\u5219\u9700\u8981\u628atitle\u548cdesc\u4ea4\u6362\u4e00\u4e0b\r\n            if(general.shareTo == 'timeline') {\r\n                var title = theData.title;\r\n                theData.title = theData.desc || title;\r\n                theData.desc = title;\r\n            }\r\n\r\n            \/\/ \u5206\u4eab\u51fa\u53bb\r\n            general.generalShare({\r\n                \"appid\":theData.appId ? theData.appId : '',\r\n                \"img_url\":theData.imgUrl,\r\n                \"link\":theData.link,\r\n                \"desc\":theData.desc,\r\n                \"title\":theData.title,\r\n                \"img_width\":\"640\",\r\n                \"img_height\":\"640\"\r\n            }, function (resp) {\r\n                switch (resp.err_msg) {\r\n                    \/\/ general_share:cancel \u7528\u6237\u53d6\u6d88\r\n                    case 'general_share:cancel':\r\n                        callbacks.cancel &amp;&amp; callbacks.cancel(resp ,general.shareTo);\r\n                        break;\r\n                    \/\/ general_share:confirm \u53d1\u9001\u6210\u529f\r\n                    case 'general_share:confirm':\r\n                    case 'general_share:ok':\r\n                        callbacks.confirm &amp;&amp; callbacks.confirm(resp ,general.shareTo);\r\n                        break;\r\n                    \/\/ general_share:fail\u3000\u53d1\u9001\u5931\u8d25\r\n                    case 'general_share:fail':\r\n                    default:\r\n                        callbacks.fail &amp;&amp; callbacks.fail(resp ,general.shareTo);\r\n                        break;\r\n                }\r\n                \/\/ \u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\u7684\u56de\u8c03\r\n                callbacks.all &amp;&amp; callbacks.all(resp ,general.shareTo);\r\n            });\r\n        };\r\n        WeixinJSBridge.on('menu:general:share', function (general) {\r\n            if (callbacks.async &amp;&amp; callbacks.ready) {\r\n                window[\"_wx_loadedCb_\"] = callbacks.dataLoaded || new Function();\r\n                if(window[\"_wx_loadedCb_\"].toString().indexOf(\"_wx_loadedCb_\") &gt; 0) {\r\n                    window[\"_wx_loadedCb_\"] = new Function();\r\n                }\r\n                callbacks.dataLoaded = function (newData) {\r\n                    window[\"_wx_loadedCb_\"](newData);\r\n                    generalShare(general,newData);\r\n                };\r\n                \/\/ \u7136\u540e\u5c31\u7eea\r\n                callbacks.ready &amp;&amp; callbacks.ready(general,general.shareTo);\r\n            } else {\r\n                \/\/ \u5c31\u7eea\u72b6\u6001\r\n                callbacks.ready &amp;&amp; callbacks.ready(general,general.shareTo);\r\n                generalShare(general,data);\r\n            }\r\n        });\r\n    }\r\n\r\n    \/**\r\n     * \u52a0\u5173\u6ce8\uff08\u6b64\u529f\u80fd\u53ea\u662f\u6682\u65f6\u5148\u52a0\u4e0a\uff0c\u4e0d\u8fc7\u56e0\u4e3a\u6743\u9650\u9650\u5236\u95ee\u9898\uff0c\u4e0d\u80fd\u7528\uff0c\u5982\u679c\u4f60\u7684\u7ad9\u70b9\u662f\u90e8\u7f72\u5728*.qq.com\u4e0b\uff0c\u4e5f\u8bb8\u53ef\u884c\uff09\r\n     * @param       {String}    appWeixinId     \u5fae\u4fe1\u516c\u4f17\u53f7ID\r\n     * @param       {Object}    callbacks       \u56de\u8c03\u65b9\u6cd5\r\n     * @p-config    {Function}  fail(resp)      \u5931\u8d25\r\n     * @p-config    {Function}  confirm(resp)   \u6210\u529f\r\n     *\/\r\n    function addContact(appWeixinId,callbacks){\r\n        callbacks = callbacks || {};\r\n        WeixinJSBridge.invoke(\"addContact\", {\r\n            webtype: \"1\",\r\n            username: appWeixinId\r\n        }, function (resp) {\r\n            var success = !resp.err_msg || \"add_contact:ok\" == resp.err_msg || \"add_contact:added\" == resp.err_msg;\r\n            if(success) {\r\n                callbacks.success &amp;&amp; callbacks.success(resp);\r\n            }else{\r\n                callbacks.fail &amp;&amp; callbacks.fail(resp);\r\n            }\r\n        })\r\n    }\r\n\r\n    \/**\r\n     * \u8c03\u8d77\u5fae\u4fe1Native\u7684\u56fe\u7247\u64ad\u653e\u7ec4\u4ef6\u3002\r\n     * \u8fd9\u91cc\u5fc5\u987b\u5bf9\u53c2\u6570\u8fdb\u884c\u5f3a\u68c0\u6d4b\uff0c\u5982\u679c\u53c2\u6570\u4e0d\u5408\u6cd5\uff0c\u76f4\u63a5\u4f1a\u5bfc\u81f4\u5fae\u4fe1\u5ba2\u6237\u7aefcrash\r\n     *\r\n     * @param {String} curSrc \u5f53\u524d\u64ad\u653e\u7684\u56fe\u7247\u5730\u5740\r\n     * @param {Array} srcList \u56fe\u7247\u5730\u5740\u5217\u8868\r\n     *\/\r\n    function imagePreview(curSrc,srcList) {\r\n        if(!curSrc || !srcList || srcList.length == 0) {\r\n            return;\r\n        }\r\n        WeixinJSBridge.invoke('imagePreview', {\r\n            'current' : curSrc,\r\n            'urls' : srcList\r\n        });\r\n    }\r\n\r\n    \/**\r\n     * \u663e\u793a\u7f51\u9875\u53f3\u4e0a\u89d2\u7684\u6309\u94ae\r\n     *\/\r\n    function showOptionMenu() {\r\n        WeixinJSBridge.call('showOptionMenu');\r\n    }\r\n\r\n\r\n    \/**\r\n     * \u9690\u85cf\u7f51\u9875\u53f3\u4e0a\u89d2\u7684\u6309\u94ae\r\n     *\/\r\n    function hideOptionMenu() {\r\n        WeixinJSBridge.call('hideOptionMenu');\r\n    }\r\n\r\n    \/**\r\n     * \u663e\u793a\u5e95\u90e8\u5de5\u5177\u680f\r\n     *\/\r\n    function showToolbar() {\r\n        WeixinJSBridge.call('showToolbar');\r\n    }\r\n\r\n    \/**\r\n     * \u9690\u85cf\u5e95\u90e8\u5de5\u5177\u680f\r\n     *\/\r\n    function hideToolbar() {\r\n        WeixinJSBridge.call('hideToolbar');\r\n    }\r\n\r\n    \/**\r\n     * \u8fd4\u56de\u5982\u4e0b\u51e0\u79cd\u7c7b\u578b\uff1a\r\n     *\r\n     * network_type:wifi     wifi\u7f51\u7edc\r\n     * network_type:edge     \u975ewifi,\u5305\u542b3G\/2G\r\n     * network_type:fail     \u7f51\u7edc\u65ad\u5f00\u8fde\u63a5\r\n     * network_type:wwan     2g\u6216\u80053g\r\n     *\r\n     * \u4f7f\u7528\u65b9\u6cd5\uff1a\r\n     * WeixinApi.getNetworkType(function(networkType){\r\n     *\r\n     * });\r\n     *\r\n     * @param callback\r\n     *\/\r\n    function getNetworkType(callback) {\r\n        if (callback &amp;&amp; typeof callback == 'function') {\r\n            WeixinJSBridge.invoke('getNetworkType', {}, function (e) {\r\n                \/\/ \u5728\u8fd9\u91cc\u62ff\u5230e.err_msg\uff0c\u8fd9\u91cc\u9762\u5c31\u5305\u542b\u4e86\u6240\u6709\u7684\u7f51\u7edc\u7c7b\u578b\r\n                callback(e.err_msg);\r\n            });\r\n        }\r\n    }\r\n\r\n    \/**\r\n     * \u5173\u95ed\u5f53\u524d\u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\u9875\u9762\r\n     *\/\r\n    function closeWindow() {\r\n        WeixinJSBridge.call(\"closeWindow\");\r\n    }\r\n\r\n    \/**\r\n     * \u5f53\u9875\u9762\u52a0\u8f7d\u5b8c\u6bd5\u540e\u6267\u884c\uff0c\u4f7f\u7528\u65b9\u6cd5\uff1a\r\n     * WeixinApi.ready(function(Api){\r\n     *     \/\/ \u4ece\u8fd9\u91cc\u53ea\u7528Api\u5373\u662fWeixinApi\r\n     * });\r\n     * @param readyCallback\r\n     *\/\r\n    function wxJsBridgeReady(readyCallback) {\r\n        if (readyCallback &amp;&amp; typeof readyCallback == 'function') {\r\n            var Api = this;\r\n            var wxReadyFunc = function () {\r\n                readyCallback(Api);\r\n            };\r\n            if (typeof window.WeixinJSBridge == \"undefined\"){\r\n                if (document.addEventListener) {\r\n                    document.addEventListener('WeixinJSBridgeReady', wxReadyFunc, false);\r\n                } else if (document.attachEvent) {\r\n                    document.attachEvent('WeixinJSBridgeReady', wxReadyFunc);\r\n                    document.attachEvent('onWeixinJSBridgeReady', wxReadyFunc);\r\n                }\r\n            }else{\r\n                wxReadyFunc();\r\n            }\r\n        }\r\n    }\r\n\r\n    return {\r\n        version         :\"2.0\",\r\n        ready           :wxJsBridgeReady,\r\n        shareToTimeline :weixinShareTimeline,\r\n        shareToWeibo    :weixinShareWeibo,\r\n        shareToFriend   :weixinSendAppMessage,\r\n        generalShare    :weixinGeneralShare,\r\n        addContact      :addContact,\r\n        showOptionMenu  :showOptionMenu,\r\n        hideOptionMenu  :hideOptionMenu,\r\n        showToolbar     :showToolbar,\r\n        hideToolbar     :hideToolbar,\r\n        getNetworkType  :getNetworkType,\r\n        imagePreview    :imagePreview,\r\n        closeWindow     :closeWindow\r\n    };\r\n})();<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\/**! * \u5fae\u4fe1\u5185\u7f6e\u6d4f\u89c8\u5668\u7684Javascript API\uff0c\u529f\u80fd\u5305\u62ec\uff1a * * 1\u3001\u5206\u4eab\u5230\u5fae\u4fe1\u670b\u53cb\u5708 * 2\u3001 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[16],"class_list":["post-564","post","type-post","status-publish","format-standard","hentry","category-javascript","tag-16"],"_links":{"self":[{"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/posts\/564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=564"}],"version-history":[{"count":1,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/posts\/564\/revisions"}],"predecessor-version":[{"id":565,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/posts\/564\/revisions\/565"}],"wp:attachment":[{"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}